home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / new_file / mintprgs / mint112s / mint112s.lzh / changes < prev    next >
Encoding:
Text File  |  1994-11-14  |  107.6 KB  |  2,998 lines

  1. Changes are listed in *reverse* order, most recent changes being
  2. first.
  3.  
  4. version 1.12
  5.  
  6. dos.c, dosdir.c: ++reschke@math.uni-muenster.de
  7.     Added Dreadlabel() and Dwritelabel() system calls.
  8.  
  9.  
  10. version 1.11
  11.  
  12. tty.c: ++nox@jelal.north.de
  13.     Added T_ECHOCTL flag.
  14. proc.c,file.h: ++nox@jelal.north.de
  15.     Added iwake() function to go with isleep().
  16. tty.c: ++nox@jelal.north.de
  17.     Fixed Fselect() collision detection.
  18. pipefs.c,shmfs.c: ++schwab@issan.informatik.uni-dortmund.de
  19.     Use effective user id's when creating files.
  20. mint.h,debug.c: ++hohmuth@inf.tu-dresden.de
  21.     Added code to call debugging routines only if the debugging
  22.     level is appropriately set.
  23. signal.c,tty.c,etc.: ++schwab@issan.informatik.uni-dortmund.de
  24.     Fixed a big security hole in killgroup().
  25. all over the place: ++nox@jelal.north.de
  26.     Extensive changes to the modem code, to support
  27.     new ioctls (e.g. for VMIN and VTIME) and to support
  28.     SIGHUP.
  29. timeout.c: ++nox@jelal.north.de
  30.     Added an optional long argument for timeouts.
  31. *fs.c: ++reschke@math.uni-muenster.de
  32.     Added DP_MODEATTR and DP_XATTRFIELDS to Dcntl() call.
  33. dosfile.c: ++roemer@informatik.uni-frankfurt.de
  34.     Made Fselect correctly handle collisions.
  35. signal.c: ++roemer@informatik.uni-frankfurt.de
  36.     Fix ikill.
  37. various places: ++David.Stevenson@jet.uk
  38.     Patches for Lattice C compatibililty.
  39. signal.c: ++schwab@issan.informatik.uni-dortmund.de
  40.     For traced processes, notify tracer about all signals
  41.     sent (even if they are ignored or blocked).
  42. dosdir.c: ++schwab@issan.informatik.uni-dortmund.de
  43.     Don't follow links in Fchown.
  44. dos.c,main.c,quickmov.spp,procfs.c: ++schwab@issan.informatik.uni-dortmund.de
  45.     Various bug fixes and enhancements.
  46. unifs.c: ++itschere@TechFak.Uni-Bielefeld.DE
  47.     Added date,time fields for drive U:, and made
  48.     the root directory accessible only to administrators.
  49. timeout.c: ++schwab@issan.informatik.uni-dortmund.de
  50.     Fixed timeouts so that canceltimeout() on an
  51.     expired timeout will no longer cancel a new one.
  52. pipefs.c:
  53.     Made it no longer fatal to use FIONREAD or FIONWRITE
  54.     on unidirectional pipes.
  55.  
  56. version 1.11 BETA
  57.  
  58. biosfs.c, pipefs.c, tty.c: ++nox@jelal.north.de
  59.     Improved ^S/^Q handling for ptys.
  60. biosfs.c, proc.c, xbios.c: ++nox@jelal.north.de
  61.     Cleaned up xbios and related initializations.
  62. dos.c, dosmem.c, dossig.c, intr.spp, proto.h: ++hyc@hanauma.jpl.nasa.gov
  63.         Added new system call Psigintr().
  64. dos.c, proc.[ch]: ++entropy@terminator.rs.itd.umich.edu
  65.     Implemented Tsetitimer() system call.
  66. biosfs.c,pipefs.c,tty.c: ++nox@jelal.north.de
  67.         add readb+writeb for ptys (for the slave->master pipe),
  68.         use memcpy for all pipes
  69.         really buffer 4K not 4K - 1 byte so the copies are aligned more often
  70. bios.c,biosfs.c,file.h,mint.h,proto.h,quickmov.spp,sproto.h
  71. tty.c,types.h,xbios.c: ++nox@jelal.north.de
  72.         add shortcuts for fast RAW tty IO in the DEVDRV
  73.         make memcpy an extended quickmove
  74.         add an XDEF'd _bcopy as a hint for gcc
  75. mint.h: ++hohmuth@inf.tu-dresden.de
  76.     Moved definition of INLINE here.
  77. bios.c,biosfs.c,xbios.c: ++nox@jelal.north.de
  78.     Better serial line support, particularly for SCC ports,
  79.     and work arounds for some BIOS bugs.
  80. dosmem.c: ++nox@jelal.north.de
  81.     Fix a memory leak with M_KEEP regions.
  82. dosmem.c,main.c: ++schwab@issan.informatik.uni-dortmund.de
  83.     Allow memory protection to work with the old AES (if
  84.     MULTITOS is not defined).
  85. dosfile.c fasttext.c *fs.c: ++itschere@TechFak.Uni-Bielefeld.DE
  86.     Add FIOEXCEPT ioctls, and make Fselect() able to
  87.     select for exceptional conditions.
  88. dosfile.c, proc.c: ++roemer@informatik.uni-frankfurt.de
  89.     Solve the 'endless serial overruns' bug.
  90. dosmem.c: ++nox@jelal.north.de
  91.     Don't allocate memory for shared text regions in a fork().
  92. dos.c: ++itschere@TechFak.Uni-Bielefeld.DE
  93.     New system calls to support supplementary group id's.
  94. dosfile.c dosmem.c filesys.c mem.[ch]: ++nox@jelal.north.de
  95.     Improve the shared text sticky bit code.
  96. dosmem.c, mem.c: ++howard@harry.lloyd.com
  97.     Keep shared-text memory regions in memory even after
  98.     the last process using them exits (like a sticky bit)
  99. dos.c,intr.spp,proc.c,loadave.h: ++steve usher (?)
  100.     Added uptime/load average code.
  101. bios.c biosfs.c intr.spp: ++nox@jelal.north.de,itschere@techfak.uni-bielefeld.de, et. al.
  102.     Allow select() on serial devices.
  103. lots of places: ++reschke@goedel.uni-muenster.de
  104.     Diffs for Pure C compatibility.
  105. biosfs.c: ++itschere@techfak.uni-bielefeld.de
  106.     Made Dcntl() check for already existing devices
  107.     with the same name, when installing a new device.
  108. tosfs.c: ++micro@imada.ou.dk
  109.     Fixed a bug in the force media change code.
  110. biosfs.c,pipefs.c: ++schwab@ls5.informatik.uni-dortmund.de
  111.     Made blksize 1024.
  112. dosmem.c: ++schwab@ls5.informatik.uni-dortmund.de
  113.     When a process exits both its own and its children's
  114.     process time should be added to the parent's children
  115.     time.  Also the time reported as resource usage
  116.     should include the children's time.
  117. pipefs.c: ++schwab@ls5.informatik.uni-dortmund.de
  118.     Don't cancel selects when pipes are closed, unless
  119.     it is the last close for the pipe.
  120. dos.c: ++kuehn@math.uni-muenster.de
  121.     Added Pseteuid() and Psetegid() system calls.
  122. dos.c,dosdir.c: ++reschke@math.uni-muenster.de
  123.     Added Dxreaddir() system call.
  124. signal.c: ++kuehn@math.uni-muenster.de
  125.     Provide more information about program crashes
  126.     to the ALERT pipe.
  127. tosfs.c,bios.c: ++reschke@math.uni-muenster.de
  128.     Allowed permissions to be changed on the root
  129.     directories of TOS drives; added CRC code for
  130.     inode numbers; fixed blocksize reported when
  131.     sector size != 512.
  132. signal.c:
  133.     Provided a version of "kill" that device drivers may
  134.     safely call from an interrupt. This function (ikill)
  135.     is available in the kerinfo structure.
  136. tty.c,dosfile.c:
  137.     Made Fselect() recognize extended escape sequences.
  138. tty.c: ++entropy@terminator.rs.itd.umich.edu
  139.     Improved job control checks for SIGTTIN/SIGTTOU.
  140. dosmem.c,proc.c: ++nox@jelal.north.de
  141.     Give more time to starting processes.
  142. proc.c: ++nox@jelal.north.de
  143.     Reduce the amount of time the kernel spends at ipl 7.
  144. tty.c: ++entropy@terminator.rs.itd.umich.edu
  145.     When the window size for a tty, has changed, send SIGWINCH to the
  146.     foreground process group of the tty.
  147.     Do CRMOD input translation only in COOKED mode.
  148. dosfile.c,dosdir.c,proc.c: ++nox@jelal.north.de
  149.     Fixed some bugs in the re-entrant open() function.
  150. timeout.c,file.h,proc.h: ++roemer@rbi.informatik.uni-frankfurt.de
  151.     Added Kay Roemer's MiNTNet code.
  152. filesys.c:
  153.     Relax the conditions for EUNDEV drives (OK, I was wrong :-)).
  154. dosfile.c,proc.c:
  155.     Finished the select() collision detection code (inspired by
  156.     Kay Roemer's patch for 1.09).
  157. dosmem.c: ++nox@jelal.north.de
  158.     Only release the controlling terminal when all members of a pgroup
  159.     exit.
  160. biosfs.c: ++entropy@terminator.rs.itd.umich.edu
  161.     Don't "follow the chain" for character special devices
  162.     in bios_getxattr().
  163. tty.c, file.h, xbios.c: ++entropy@terminator.rs.itd.umich.edu
  164.     Add a real TIOCSETP (differs from TIOCSETN in that it waits for
  165.     the output buffer to be empty if the device supports TIOCOUTQ.)
  166.     Remove a kludge in rsconf() which is not needed if a real TIOCSETP
  167.     exists.
  168. various places: ++schwab@issan.informatik.uni-dortmund.de
  169.     Added __attribute__((noreturn)) support.
  170. debug.c, fasttext.c: ++nox@jelal.north.de
  171.     Assorted bug fixes.
  172. intr.spp: ++nox@jelal.north.de
  173.     Improved select() for repeating keys.
  174. various places: ++schwab@issan.informatik.uni-dortmund.de
  175.     All kinds of useful optimizations and bug fixes.
  176.     Thanks, Andreas!
  177. various places: ++reschke@math.uni-muenster.de
  178.     Removed various PureC warnings.
  179. main.c: ++itschere@TechFak.Uni-Bielefeld.DE
  180.     Initialize timestamp and datestamp before
  181.     doing file system initialization.
  182. pipefs.c: ++schwab@ls5.informatik.uni-dortmund.de
  183.     Changed FIONREAD to correctly return the number
  184.     of bytes available for reading, even if there
  185.     are no writers.
  186. tosfs.c: ++schwab@ls5.informatik.uni-dortmund.de
  187.     Make FIONREAD return an accurate count of the
  188.     number of bytes left to read.
  189. tty.c: ++schwab@ls5.informatik.uni-dortmund.de
  190.     Fcntl(TIOCSETP) now puts the terminal into RAW or
  191.     cooked mode immediately (it used to take until
  192.     the next read or write).
  193. dosfile.c: ++schwab@ls5.informatik.uni-dortmund.de
  194.     Watch out for aliasing of pointers passed to
  195.     Fselect().
  196.  
  197. version 1.10
  198.  
  199. procfs.c: ++nox@jelal.north.de
  200.     New Fcntl() command (PFSTAT) for finding
  201.     control terminals of processes.
  202. dosfile.c: ++bjarne@goedel.uni-muenster.de
  203.     Make f_open and f_create reentrant.
  204. main.c: ++hyc@hanauma.jpl.nasa.gov
  205.     Better Falcon Bconmap() fix.
  206. dos.c: ++hyc@hanauma.jpl.nasa.gov
  207.     NEW SYSTEM CALL: Tmalarm() for millisecond resolution
  208.     alarms.
  209. biosfs.c: ++nox@jelal.north.de
  210.     Fixed ioctl(,,TCSETBAUD) when oldbaud == newbaud.
  211. dosdir.c,unifs.c: ++schwab@ls5.informatik.uni-dortmund.de
  212.     Extended Dfree() to work properly on arbitrary drives,
  213.     not just ones that are root directories or aliased
  214.     (this arises e.g. for Dfree() on U:, when the current directory
  215.     isn't a root).
  216. syscall.spp,inline.h: ++schwab@ls5.informatik.uni-dortmund.de
  217.     Bugfix for TOS 1.4: the BIOS expects register A5 to
  218.     contain a 0 when it is called.
  219. bios.c: ++schwab@ls5.informatik.uni-dortmund.de
  220.     Make reads on console interrupt driven.
  221. procfs.c,shmfs.c:
  222.     Fixed Fseek(offset,f,2) to properly add "offset" to the
  223.     end of file position, rather than subtracting it.
  224. proc.c,signal.c: ++roemer@informatik.uni-frankfurt.de
  225.     Made sleep return a value specifying whether or not the
  226.     sleeping process was interrupted by any signals.
  227. file.h,biosfs.c,fasttext.c: ++itschere@TechFak.Uni-Bielefeld.DE
  228.     Added XATTR structure to bios files, to allow them to have
  229.     ownership, access modes, and time stamps. Restricted
  230.     Dcntl on u:\dev to superuser processes.
  231. biosfs.c, pipefs.c, file.h: ++entropy@terminator.rs.itd.umich.edu
  232.     Fix TIOCFLUSH on biosfs.
  233.     Give meaning to TIOCFLUSH's argument:  it is now a pointer
  234.         to a longword mask specifying the type of flush:
  235.         *arg & 1 -> flush input only
  236.         *arg & 2 -> flush output only
  237.         *arg == 0 -> flush input and output
  238.         arg == NULL -> flush input and output (backwards compatibility)
  239.     Add TIOCOUTQ to biosfs and pipefs.  The argument is a pointer
  240.         to a longword to be filled with the number of bytes in the
  241.         output buffer.
  242. *fs.c,file.h:
  243.     Added an "rdev" field to the XATTR structure, so that programs
  244.     can find the BIOS device number for character devices.
  245. biosfs.c: ++schwab@ls5.informatik.uni-dortmund.de
  246.     Added a /dev/fd subdirectory.
  247. biosfs.c: ++schwab@ls5.informatik.uni-dortmund.de
  248.     Restrict some operations to privileged users.
  249. filesys.c: ++itschere@TechFak.Uni-Bielefeld.de
  250.     Create new device filenames in lower case, for consistency.
  251. dosdir.c,tosfs.c: ++itschere@TechFak.Uni-Bielefeld.de
  252.     Improved security for Fdelete, Dsetpath, and some other
  253.     calls; made TOS file systems accessible only to root and
  254.     the admin group.
  255. bios.c,syscall.spp,main.c,proc.h:
  256.     Added a flag (in_dos) to the PROC structure; the BIOS can use
  257.     this for security checking on Rwabs and similar calls.
  258. procfs.c: ++micro@imada.ou.dk
  259.     Bug fix: memory protection modes weren't being properly reset
  260.     after memory was read from/written to.
  261. mem.c: ++bernd.kischnik@cdc2.ifum.maschinebau.uni-hannover.d400.de
  262.     Fixed a bug with memory initialization when the screen is
  263.     at a fixed location (i.e. with 3rd party graphics cards).
  264. context.spp: ++alex@falcon.demon.co.uk
  265.     Only check for 64 bytes of supervisor stack, rather than 1K; also,
  266.     corrected some loop counters.
  267. tty.c: ++nox@jelal.north.de
  268.     Hack so that ^S/^Q work on BIOS devices other than the keyboard.
  269. intr.spp: ++nox@jelal.north.de
  270.     Check for auto-repeating keys so that Fselect() wakes up more
  271.     quickly.
  272. bios.c: ++nox@jelal.north.de
  273.     Made BIOS devices take less CPU time while waiting for characters.
  274. filesys.c:
  275.     If a search for a path component (other than the last one)
  276.     fails, always return EPTHNF (like GEMDOS does).
  277. pipefs.c:
  278.     When freeing a closed fifo, free any associated tty as well.
  279. main.c: ++schwab@ls5.informatik.uni-dortmund.de
  280.     New command for mint.cnf: "include".
  281. mem.c:
  282.     In create_base(), limited the amount of memory assigned to
  283.     a new basepage if the current process has a limit assigned
  284.     by Psetlimit().
  285. biosfs.c:
  286.     Fixed the DEV_NEWBIOS call (it wasn't linking the newly created
  287.     device into the bios file system chain).
  288. dosdir.c:
  289.     Based on a suggestion by Uwe Seimet: made Dlock() return
  290.     ELOCKED when called twice by the same process, so that under
  291.     single tasking AES accessories may use it.
  292. unifs.c:
  293.     Fixed a bug in FS_UNMOUNT (fc->index is not necessarily
  294.     a pointer to a UNIFILE, since the file system may use
  295.     that for its own purposes).
  296. debug.c: ++nox@jelal.north.de
  297.     Make only ctrl-alt-key characters significant to the
  298.     debug code (before, any character could start/stop output).
  299. memprot.c,mem.c,dosmem.c: ++schwab@ls5.informatik.uni-dortmund.de
  300.     Andreas did a major clean-up of the memory protection code.
  301.     It's now faster, and quite a few bugs have been fixed.
  302. mem.c: ++schwab@ls5.informatik.uni-dortmund.de
  303.     Made sure that only even addresses are passed to zero() (I guess
  304.     some linkers don't make sure that text, data, and bss are all
  305.     even lengths?)
  306. util.c: ++schwab@ls5.informatik.uni-dortmund.de
  307.     In kmalloc(), the size passed to nalloc_add_arena() was wrong.
  308. main.c,debug.c,mem.c: ++schwab@ls5.informatik.uni-dortmund.de
  309.     Restore the screen to its original address when exiting MiNT.
  310. fasttext.c: ++nox@jelal.north.de
  311.     Allowed the fasttext device to be opened more than once.
  312. nalloc2.c: ++nox@jelal.north.de
  313.     Fixed the code for figuring out when to free an arena (it didn't
  314.     use to take account of the arena size itself).
  315. proc.c: ++Martin_Koehling@un.maus.ruhr.de
  316.     Allocate all memory before doing file duplication, so that
  317.     if a fork() runs out of memory we don't leave cookies
  318.     hanging.
  319. main.c: ++brad@tazboy.jpl.nasa.gov
  320.     Allow quotes to delimit arguments in the MINT.CNF file.
  321. xbios.c:
  322.     Installed a work-around in dosound() for Pure C's problem
  323.     with "volatile".
  324. filesys.c:
  325.     Put in a temporary kludge so that .XFSes that don't install
  326.     BIOS vectors can work (for a while). Note that .XFSes should
  327.     either install BIOS vectors, or should mount themselves on
  328.     drive U: without taking up a drive letter. THIS KLUDGE WILL
  329.     GO AWAY SOMEDAY SOON!!!
  330. syscall.spp: ++schwab@ls5.informatik.uni-dortmund.de
  331.     Various optimizations.
  332.  
  333. version 1.09
  334.  
  335. biosfs.c:
  336.     Implement file locking for BIOS devices.
  337. dosmem.c:
  338.     Fix the Pexec(200,...) bug (trying to save the command line
  339.     image must be done *before* the existing program's memory
  340.     is freed).
  341. nalloc2.c,util.c:
  342.     Allow kmalloc()'d memory to be returned to the OS, if possible.
  343. xbios.c:
  344.     Dosound() can be called with a negative number as its parameter,
  345.     in which case it is only an inquiry function.
  346.  
  347. version 1.08
  348.  
  349. dosfile.c,dosdir.c,filesys.c:
  350.     Made the file and directory operations re-entrant, by replacing
  351.     the global variable "temp1" with local variables (where needed).
  352. dosdir.c,filesys.c: ++schwab@ls5.informatik.uni-dortmund.de
  353.     Cleaned up the directory closing functions.
  354. dosmem.c: ++schwab@ls5.informatik.uni-dortmund.de
  355.     Fixed a bug in do_vfork (the child's PROC structure could be
  356.     freed when signals are checked for, and the old code wasn't
  357.     prepared for that).
  358. purec\*.*: ++reschke@math.uni-muenster.de
  359.     Updated for the new version of MiNT.
  360. *.*: ++alex@falcon.demon.co.uk
  361.     Lots of fixes to get rid of warnings and some small optimizations.
  362. dosmem.c,procfs.c: ++reschke@math.uni-muenster.de
  363.     In Pexec, save the name and arguments a process was started with
  364.     into the PROC structure, so that they can be recovered at run time.
  365. filesys.c,main.c,unifs.c: ++Ulrich Kuehn
  366.     At boot time, load files called *.xdd which contain external
  367.     device drivers.
  368.     Also, provide Dcntl calls for drive U: to allow installing and
  369.     de-installing file systems at run time.
  370. bios.c: ++nox@jelal.north.de
  371.     Only busy-wait for the parallel port, not for serial ports.
  372. unifs.c: ++schwab@ls5.informatik.uni-dortmund.de
  373.     Pass Dcntl commands along to file systems.
  374. signal.c: ++schwab@ls5.informatik.uni-dortmund.de
  375.     Make Fselect interruptable.
  376. procfs.c: ++schwab@ls5.informatik.uni-dortmund.de
  377.     Check for illegal signal numbers in ioctl(PTRACEGO,...).
  378. dosdir.c:
  379.     Fattrib should have been following links.
  380. *.spp: ++Claus Brod and Uwe Seimet
  381.     Various optimizations
  382.  
  383. version 1.07
  384.  
  385. debug.c: ++reschke@math.uni-muenster.de
  386.     Translated the German "FATAL ERROR" message.
  387. intr.spp:
  388.     The bus error handler shouldn't use 68030 MMU instructions unless
  389.     it is on a 68030. (Thanks to Stephen Henson for catching this.)
  390.  
  391. version 1.06
  392.  
  393. bios.c: ++akiernan@cix.compulink.co.uk
  394.     Fixed a bug with Bconout and TOS 1.02.
  395. dosmem.c:
  396.     Bug fix: Pexec mode 4 should cause the child to inherit its parent's
  397.     memory.
  398. filesys.c:
  399.     if disk_changed() detects an invalid drive, return EDRIVE from
  400.     it and also from path2cookie().
  401. main.c:
  402.     Fixed the PRN= line in mint.cnf (it was redirecting AUX:, not
  403.     PRN:).
  404. xbios.c:
  405.     Made Dosound() automatically grant supervisor access to the
  406.     region the sound is in.
  407. debug.c:
  408.     Make the "FATAL ERROR" message multilingual, and also less
  409.     confusing if debugging information is not provided.
  410. timeout.c,main.c:
  411.     Make the addtimeout() and canceltimeout() functions available
  412.     for device drivers.
  413. signal.c: ++schwab@ls5.informatik.uni-dortmund.de
  414.     Reduce the amount of space needed for signal calls (we were
  415.     being overly cautious on that),
  416. dosmem.c: ++akiernan@falcon.demon.co.uk
  417.     Make sure that the text segment in which a process will be
  418.     executing is attached to that process when it is started with
  419.     a Pexec (4,...).
  420. asmtrans: ++robert.wilhelm@physik.tu-muenchen.de
  421.     Enhanced to accept some 68030 specific addressing modes.
  422. proc.c:
  423.     Removed the save/restore of the logical screen pointer for the
  424.     MultiTOS kernel (this causes problems on a Falcon, since if the
  425.     AES changes resolution its parent process may be left with a
  426.     logical screen pointer pointing at invalid memory). 
  427. bios.c: ++robert.wilhelm@physik.tu-muenchen.de
  428.     Some small optimizations.
  429. biosfs.c:
  430.     Fcntl() was not interacting properly with rsconf(), so that
  431.     setting baud rates via Fcntl didn't work.
  432. dosfile.c:
  433.     Fforce() should return 0 on success.
  434. context.spp,cpu.spp: ++julian@math.uni-muenster.de
  435.     Patches for PureC.
  436. intr.spp: ++Robert.Wilhelm@Physik.TU-Muenchen.DE
  437.     Small optimization: no return value is needed for spl().
  438.  
  439. version 1.05
  440.  
  441. main.c: ++hyc@hanuama.jpl.nasa.gov
  442.     A better Falcon BIOS fix: if we're on a broken Falcon, turn
  443.     off Bconmap completely.
  444. various places: ++hohmuth@freia.inf.tu-dresden.de
  445.     Applied Michael's patch to make MiNT compile with PureC and
  446.     the MiNT library.
  447. memprot.c: ++schwab@lamothe.informatik.uni-dortmund.de
  448.     Fixed a bug in prot_temp (the cookie values weren't being
  449.     parsed out correctly). Also, added "const" where appropriate.
  450. dosfile.c: ++schwab@lamothe.informatik.uni-dortmund.de
  451.     Fixed some places where the fdflags[] for file handles
  452.     wasn't be set up correctly (default is 0 for std handles,
  453.     FD_CLOEXEC for non-std).
  454. cpu.spp,main.c: ++schwab@lamothe.informatik.uni-dortmund.de
  455.     Saved the MMU context when starting MiNT, so that we can
  456.     restore it again afterwards (and thus exit MiNT gracefully).
  457. main.c: ++julian@math.uni-muenster.de
  458.     Supplied a PMMU cookie if memory protection is on; if a PMMU
  459.     cookie already exists, don't do memory protection.
  460. fasttext.c: ++nox@jelal.north.de
  461.     Added ESC-t support to the fasttext device.
  462. bios.c: ++nox@jelal.north.de
  463.     Some modem port TSRs also don't return the correct value from
  464.     Bconout.
  465. dos.c:
  466.     Made Tsettime() and Tsetdate() available only to the super user.
  467. various places: ++akiernan@cix.compulink.co.uk,++julian@math.uni-muenster.de
  468.     Portability fixes to make the code compile with PureC and
  469.     Lattice C; also, Alex fixed up the cache clearing code.
  470. tosfs.c: ++schwab@lamothe.informatik.uni-dortmund.de
  471.     Fixed a bug in the NEWWAY code (during disk change, don't
  472.     free file cookies that may be in use).
  473. context.spp: ++seimet@rhrk.uni-kl.de
  474.     In the restore context code, touch the page containing the
  475.     (new) supervisor stack pointer before switching stack pointers.
  476.     Otherwise, if the page is not resident (a 3rd party virtual
  477.     memory system has swapped it out) then the resulting
  478.     bus error is fatal.
  479. tosfs.c: ++akiernan@cix.compulink.co.uk
  480.     Fixed a bug that could cause crashes on disk changes (the
  481.     'open' field was an integer for directories).
  482. rendez.c, mem.c: ++Martin_Koehling@un.maus.de
  483.     Fixed some memory leaks (semaphores weren't freed after being
  484.     destroyed, and if load_and_reloc failed then the memory
  485.     allocated for the shared text region wasn't freed).
  486. procfs.c:
  487.     When tracing is cancelled for a process with PTRACESFLAGS,
  488.     start the process again by sending it SIGCONT.
  489. procfs.c: ++schwab@lamothe.informatik.uni-dortmund.de
  490.     Don't allow processes to be removed by a different user.
  491. signal.c:
  492.     Fixed the debug tracing code so that SIGCONT doesn't stop
  493.     a process, even if it is being traced.
  494. procfs.c:
  495.     Dpathconf was returning the wrong value (8 instead of 12 -- it
  496.     wasn't taking the pid number extension into account).
  497.  
  498. version 1.04
  499.  
  500. bios.c:
  501.     Changed the way timeout worked for Bconout() stuff (basically,
  502.     rewrote the code so that it really does work -- the old code
  503.     used the system clock in timeout.c, which doesn't get updated
  504.     if no context switches are happening; the new code uses the
  505.     200hz counter, which is always updated).
  506. proc.h:
  507.     Increased the number of Fsfirst searches that can happen
  508.     simultaneously to 10 from 6 (this is a per-process
  509.     limit, not system wide).
  510.  
  511. version 1.03
  512.  
  513. xbios.c: ++entropy@terminator.rs.itd.umich.edu
  514.     In old versions of TOS, Rsconf could get stuck waiting for the
  515.     transmit buffer to empty if flow control was on. Added a timeout.
  516. dos.c:
  517.     Changed Psetpgrp so that passing a pgrp of -1 makes it into
  518.     an inquiry call.
  519. filesys.c: ++Martin_Koehling@un.maus.de
  520.     Fixed a bug in Flock (regions were being locked 1 byte too far).
  521. mem.h:
  522.     Changed the memory allocation quantum to 256 bytes, so that
  523.     Srealloc will always work right on ST's.
  524.  
  525. version 1.02
  526.  
  527. main.c:
  528.     Run any AUTO folder programs appearing after MINTNP.PRG
  529.     as well as just plain MINT.PRG.
  530. syscall.spp:
  531.     Pop more stuff off the stack in sig_return, since we
  532.     did push more onto it in handle_sig. (It really shouldn't
  533.     matter, restore_context will restore the stack pointer
  534.     anyway, but better safe than sorry.)
  535. filesys.c,mem.c:
  536.     Made the open file associated with shared text memory
  537.     regions be closed automatically when a media change occurs.
  538. xbios.c:
  539.     Changed the do_usrcall function into an assembly language
  540.     routine which preserves all registers. Apparently some
  541.     programs rely on being able to pass parameters to Supexec
  542.     in registers. We only used to kill register A0, which was
  543.     reserved for BIOS use anyway, but obviously some programmers
  544.     choose not to read the f'ing manual.
  545. dosdir.c: ++entropy@terminator.rs.itd.umich.edu
  546.     Fixed a typo (PATH_MAX where ERANGE should have been).
  547. biosfs.c: ++schwab@lamothe.informatik.uni-dortmund.de
  548.     Check control keys on every newline, so users get quick response
  549.     to their key hits.
  550. tty.c: ++schwab@lamothe.informatik.uni-dortmund.de
  551.     Fixed a typo (t_startc is the character to use to resume terminal
  552.     output, not t_stopc!)
  553. dosdir.c,dosmem.c,filesys.c,tosfs.c: ++schwab@lamothe.informatik.uni-dortmund.de
  554.     Fixed many dup_cookie and release_cookie bugs; the code should be much
  555.     more usable now.
  556. main.c:
  557.     Corrected a flaw in the 68030 only version -- it assumed that
  558.     68030 was synonymous with memory protection. Also: set
  559.     mcpu correctly.
  560. main.c:
  561.     Checked to see if we're called "MINTNP.PRG"; if so, turn off
  562.     memory protection automatically. Commented out the code
  563.     for automatically turning MP off on 1 meg machines.
  564.  
  565. version 1.01
  566.  
  567. main.c,intr.spp:
  568.     Use init_tail for the temporary stack (saves us 128 bytes of bss,
  569.     oh boy).
  570. main.c:
  571.     If less than 1 megabyte is free, turn off memory protection
  572.     automatically.
  573. mem.h:
  574.     If there's no memory protection, do all ROUNDing etc. to
  575.     16 byte boundaries rather than 8K page boundaries.
  576. mem.c:
  577.     Added a check for the ability to move screen RAM; evidently
  578.     some boards use ST RAM but still don't allow Setscreen()
  579.     to work.
  580. all over the place: ++julian@math.uni-muenster.de
  581.     Cleaned up the code for PureC compatibility.
  582. all over the place: ++akiernan@cix.compulink.co.uk
  583.     Cleaned up the code for Lattice compatibility.
  584. fasttext.c: ++hyc@hanauma.jpl.nasa.gov
  585.     Sped up by special casing some of the gotoxy() calls, and
  586.     also allowed 8 pixel high characters in monochrome mode.
  587. dosdir.c: ++schwab@lamothe.informatik.uni-dortmund.de
  588.     Allow Frename() to succeed on symbolic links.
  589. signal.c: ++schwab@lamothe.informatik.uni-dortmund.de
  590.     Save processor context stuf in the reserved BIOS area even for
  591.     bus errors with memory protection on.
  592. dosfile.c: ++schwab@lamothe.informatik.uni-dortmund.de
  593.     Initialize the exception file descriptors to 0, in anticipation
  594.     of future use of this Fselect feature.
  595. dosfile.c: ++schwab@lamothe.informatik.uni-dortmund.de
  596.     Allow pipes to be opened and written to with O_APPEND mode.
  597. version.h:
  598.     Got rid of the PATCHLEVEL define. Now that I've finally
  599.     checked everything into RCS, it's much easier to just bump
  600.     up the version numbers on each release.
  601.  
  602. version 1.00
  603.  
  604. welcome.c,version.h:
  605.     Sigh. This is MultiTOS 1.0's MiNT, so even though I don't
  606.     consider it "finished", I'm changing the version number to
  607.     1.0. At least it's no worse than TOS 1.0 :-).
  608. memprot.c:
  609.     We want to flush the ATC cache, *not* the CPU cache. Thanks
  610.     for pointing this out, Alex.
  611. bios.c:
  612.     Fixed a problem with Speedo GDOS; if the printer's buffer was
  613.     full, Bconout(2,...) would do a context switch, which is not
  614.     a good thing for Speedo.
  615.  
  616. version 0.99
  617.  
  618. PATCHLEVEL 2::
  619.  
  620. main.c:
  621.     Big bug fix -- the do_exec_os routine was being called with a
  622.     basepage that occupied all of memory, so that the Pexec(200) it
  623.     did was failing due to insufficient memory. Now we Mshrink the
  624.     basepage; this also necessitates fixing up the stack pointer.
  625. main.c:
  626.     Handle mint.cnf files that don't end in a carriage return/line feed
  627.     combination.
  628. filesys.c:
  629.     New path parsing code to correct a bug in the way symbolic
  630.     links were being handled on loadable file systems.
  631.  
  632. PATCHLEVEL 1::
  633.  
  634. debug.c:
  635.     Made the default debugging level give ALERT messages.
  636. dosfile.c:
  637.     Corrected a bug in the way global file handles are closed.
  638.  
  639. PATCHLEVEL 0::
  640.  
  641. dosmem.c:
  642.     Made it so that overlay Pexec modes (e.g. 200) set up
  643.     the basepage to preserve the same "parent".
  644. main.c:
  645.     Added in a kludge so that if we're starting GEM from a file
  646.     (e.g. gem.sys) then we do it via the exec_os vector. I hope
  647.     this makes the Codeheads happy :-).
  648. dosmem.c,tty.c:
  649.     Backed out entropy's and schwab's changes. Random programs
  650.     were getting stopped under MultiTOS because of them; I can't
  651.     find the cause, so let's go back to something that worked
  652.     (if suboptimally).
  653. main.c:
  654.     Fixed a silly initialization error: we should not
  655.     assume a default language, we should get it from
  656.     the ROMs.
  657. dosdir.c: ++julian@math.uni-muenster.de
  658.     Extended Dlock: if bit 1 of the mode is set, then the
  659.     process id of the process using the drive is returned
  660.     instead of ELOCKED or EACCDN; this allows for more
  661.     informative error messages.
  662. welcome.c:
  663.     Updated the copyright notice.
  664.  
  665. version 0.98
  666.  
  667. PATCHLEVEL 4::
  668.  
  669. dosmem.c,tty.c: ++entropy@gnu.ai.mit.edu
  670.     Corrected some silliness in the job control code.
  671.  
  672. PATCHLEVEL 3::
  673.  
  674. xbios.c:
  675.     Took out the ONLY030 optimization; it didn't work correctly
  676.     (I can't see any reason why it shouldn't have worked, but
  677.     it didn't; perhaps a compiler bug bit us?)
  678.  
  679. PATCHLEVEL 2::
  680.  
  681. main.c:
  682.     Changed magic shift key to LEFT shift key.
  683. filesys.c:
  684.     Make loaded .XFS files go into supervisor accessible
  685.     memory.
  686. welcome.c,main.c:
  687.     Ask user in her own language whether or not to boot if the
  688.     kernel is a MultiTOS one and she held down the shift key.
  689. filesys.c:
  690.     Relax O_COMPAT mode opens somewhat so that any
  691.     number of processes can open the file for reading,
  692.     as long as no more than 1 has it open for writing.
  693.     ALSO: make sure O_EXEC gets treated the same as O_RDONLY.
  694. dosfile.c:
  695.     Change TRACE() to TRACELOW() on Fread and Fwrite.
  696. tosfs.c:
  697.     Went back to old method of doing tosfs.c; this is
  698.     better tested and safer.
  699. dos.c:
  700.     New system call, Salert(msg), for doing an alert message.
  701. debug.c:
  702.     Terminate messages written to the alert pipe with a 0.
  703.     Also: pour them into alert boxes so that programs like
  704.     sysalert don't have so much to do.
  705.  
  706. PATCHLEVEL 1::
  707.  
  708. fasttext.c: ++shenson
  709.     Corrected the quote_putch function.
  710. dosdir.c:
  711.     Allow Dfree(n) to work if "n" is a big number (e.g. BIOSDRV)
  712.     and the corresponding pseudo-drive is a current or root directory
  713.     of the current process.
  714. pipefs.c: ++schwab@ls5.informatik.uni-dortmund.de
  715.     Return a new error number, EPIPE, for writes to broken pipes.
  716. tty.c: ++schwab@ls5.informatik.uni-dortmund.de
  717.     If a tty loses its owner, the next process to do i/o to it
  718.     will become the owner.
  719. dosfile.c: ++schwab@ls5.informatik.uni-dortmund.de
  720.     FA_RDONLY doesn't mean "read only" on the process file system,
  721.     so allow such processes to be opened for writing.
  722.  
  723. PATCHLEVEL 0::
  724.  
  725. xbios.c:
  726.     Fixed Supexec to pass the function pointer on the stack, too
  727.     (just as TOS does). This is still undocumented behaviour,
  728.     so you rely on it at your own risk.
  729. xbios.c: ++entropy@gnu.ai.mit.edu
  730.     Applied a fix for Rsconf() with TOS 1.04, and made the
  731.     old TOS Rsconf stuff #ifndef ONLY030.
  732. proc.c,dosmem.c:
  733.     Wrap all calls to add_q/rm_q in spl7(), so that the
  734.     wakeselect() function truly can be called from
  735.     interrupt code.
  736. makefile,*.spp:
  737.     Make provisions for compiling an 030/040 only version
  738.     of MiNT; this should be faster and smaller than the
  739.     generic version.
  740. version.h:
  741.     The file system interface changes warrant a new version
  742.     number, so here it is.
  743.  
  744. version 0.97
  745.  
  746. PATCHLEVEL 3::
  747.  
  748. dosdir.c,proc.c:
  749.     Keep a chain of open directories, so that if a program
  750.     terminates without calling closedir() we can still clean
  751.     up after it. Also: allocate directory structures from
  752.     kernel memory rather than user memory, so that we don't
  753.     take an 8K hit on each one. PROBLEM: a bug in the mntlib
  754.     readdir() function causes bus errors if memory protection
  755.     is on. This is a library bug that needs to be fixed
  756.     real soon now.
  757. dosmem.c:
  758.     TSRs now get forced into global memory if they were running
  759.     privately; this should make things easier for users who
  760.     forgot to change prgflags on their TSR programs.
  761. filesys.c:
  762.     New meaning for O_COMPAT mode: deny write access to all other
  763.     processes.
  764. tosfs.c:
  765.     Added a define to turn on/off the RO_FASCISM code. Personally,
  766.     I think it should always be on.
  767. dosdir.c,filesys.c,file.h,*fs.c:
  768.     New file system functions, release() and dupcookie(), so that
  769.     the kernel can inform file systems when it is finished
  770.     with a file cookie; networked file systems will be very
  771.     happy about this.
  772.  
  773. PATCHLEVEL 2::
  774.  
  775. procfs.c:
  776.     Moved the memory protection checks for proc_read and
  777.     proc_write to a separate function in memprot.c.
  778. dosfile.c:
  779.     Remove the old compatibility code for Fcntl(F_SETFL,...).
  780.     (Actually, it's commented out, so we can put it back in
  781.     if we need to.)
  782. signal.c:
  783.     Change default behaviour for SIGFPE (which is raised
  784.     by division by 0) to "ignore", same as TOS.
  785. dosdir.c:
  786.     Made Dgetcwd() use the new size parameter, so that it
  787.     works as advertised.
  788. file.h, *fs.c:
  789.     Provide a "size" parameter for the getname() file system
  790.     function, so that we can do Dgetpath() of arbitrary length
  791.     paths.
  792. util.c:
  793.     BIG_MEM_DUMP is a nasty thing for users to get;
  794.     so we shouldn't do it on all failed mallocs!
  795.  
  796. PATCHLEVEL 1::
  797.  
  798. proc.c:
  799.     Plugged a memory leak (dispose_proc was failing to
  800.     free the process table memory, because fork_proc
  801.     was zeroing that field in the PROC structure).
  802. main.c:
  803.     Fixed MAXMEM= (it was setting the maximum CPU time,
  804.     not the maximum memory -- I thought I tested this!)
  805.  
  806. PATCHLEVEL 0::
  807.  
  808. main.c:
  809.     Added MAXMEM= and SLICES= variables for mint.cnf.
  810. bios.c:
  811.     Fixed Setexc so that if the new vector is in a global
  812.     region, the region is re-marked to be super.
  813. dosmem.c:
  814.     Fixed a race condition with memory protection and
  815.     Pexec(100,...) (if the new process exited early,
  816.     the old process might still try to access it).
  817. realloc.c:
  818.     New file, for doing the Srealloc system call (for
  819.     Falcon TOS).
  820. *.*:
  821.     Merged in Allan's memory protection and debugging
  822.     code. New files: memprot.c, nalloc2.c, welcome.c.
  823.  
  824. version 0.96
  825.  
  826. PATCHLEVEL 14::
  827.  
  828. tosfs.c:
  829.     Aaargh! Just after cutting this patch I discovered
  830.     that I had the test backwards.
  831.  
  832. PATCHLEVEL 13::
  833.  
  834. tosfs.c:
  835.     Changed so that Fsfirst()/Fsnext() always return
  836.     upper case, regardless of domain. (MiNT aware
  837.     programs should use the new directory functions.)
  838. dosdir.c: ++akiernan
  839.     Got rid of the special hack for drive x:, since
  840.     drive x: no longer exists.
  841. asm.y: ++akiernan
  842.     Cleaned up a bit.
  843. *.c: ++julian
  844.     Some minor patches for PureC.
  845. dosdir.c: ++julian
  846.     New system call, Dgetcwd(), with a 'size' parameter;
  847.     this doesn't do anything different from Dgetpath
  848.     now, but it's there for future expansion.
  849.  
  850. PATCHLEVEL 12::
  851.  
  852. version.h:
  853.     Update the patchlevel correctly.
  854. pipefs.c,dosfile.c:
  855.     Keep the Unix style semantics for pipes created with
  856.     Fpipe, but not for other fifo's (which by default will
  857.     continue to read the number of bytes requested).
  858.  
  859. PATCHLEVEL 11::
  860.  
  861. tty.c:    ++schwab
  862.     Support word-erase and quote-next-char.
  863. fasttext.c: ++schwab
  864.     support fgcol/bgcol
  865.     (screen_ioctl): tty_ioctl is now called by parent by default if
  866.     EINVFN
  867. signal.c (check_sigs): ++schwab
  868.     Use an int to index signals, not a long
  869. biosfs.c (bios_getxattr): ++schwab
  870.     u:\dev\stdin, etc., get the attributes of
  871.     the associated files
  872. dos.c (p_setuid, p_setgid): ++schwab
  873.     Allow setting to the current real [gu]id
  874. bios.c (checkkeys): ++schwab@ls5.informatik.uni-dortmund.de
  875.     Keys read by do_func_key should not be
  876.     interpreted (esp. UNDO -> SIGQUIT). also recheck shift status
  877.     since do_func_key may take some time
  878. xbios.c: ++entropy@gnu.ai.mit.edu
  879.     Added code to support old (tos < 1.4) Rsconf()
  880.     semantics.
  881. mem.c:
  882.     Changed so that attempts to execute a shared text program
  883.     which has data/bss references in the text segment will
  884.     get an ENOEXEC error instead of ENSMEM.
  885. *.c: ++julian@math.uni-muenster.de
  886.     Applied Julian's purec patches.
  887.  
  888. PATCHLEVEL 10::
  889.  
  890. pipefs.c:
  891.     Changed so that read() on a pipe will return as
  892.     soon as some data is available; this is how
  893.     all Unixes work.
  894. *.c:
  895.     Applied Julian's patches to allow compilation with
  896.     PureC.
  897. main.c:
  898.     New variable, MAXMEM=, for setting maximum memory
  899.     size (in K).
  900. main.c:
  901.     Removed PSEUDODRIVES= command, since "alias" has
  902.     replaced it.
  903. util.c:
  904.     Changed atoi to atol; it's more generally useful.
  905. asmtrans:
  906.     Applied Howard's patches; in particular, made %ifdef
  907.     apply to other commands (like %define) as well as to
  908.     code generation.
  909.     
  910. PATCHLEVEL 9::
  911.  
  912. asmtrans:
  913.     Cleaned up a bit more for cross-compilation.
  914. intr.spp:
  915.     in_kernel can be set while the process is in user mode
  916.     (if the critical error handler calls GEM)
  917. syscall.spp:
  918.     Get rid of some more magic numbers.
  919. bios.c:
  920.     While fixing the mtt bug, a new bug was introduced. So,
  921.     let's try again :-).
  922.  
  923. PATCHLEVEL 8::
  924.  
  925. bios.c:
  926.     Fixed a particularly silly bug in bios.c: in do_bconin(),
  927.     r was being returned without being initialized. Why didn't
  928.     gcc catch this?
  929. *.c:
  930.     Applied Alex's patches for Lattice, and Julian's patches for
  931.     Pure C.
  932. signal.c:
  933.     Kill programs with p_term() instead of terminate() (except for
  934.     signal SIGKILL) so as to allow them a chance to clean up via
  935.     the term_vec vector.
  936. shmfs.c:
  937.     Allow Fattrib() call to change the read-only
  938.     bit. Made Fxattr() return the correct mode
  939.     for shared memory files.
  940. main.c, fasttext.c:
  941.     Allowed HARDSCROLL=AUTO to set the number of
  942.     lines of scrolling to the current screen size.
  943. syscall.spp, inline.h:
  944.     New functions, callout2() and callout1(), with
  945.     less overhead; used by bios.c to call the
  946.     Bconxxx functions.
  947. bios.c:
  948.     Changed calls to Bconxxx functions into
  949.     jumps through the defined vector table in
  950.     low memory, when this is possible (TOS 1.0
  951.     doesn't have the table).
  952. asmtrans, *.spp:
  953.     Added %ifdef, %else, and %endif commands (for
  954.     future expansion). Removed the requirement that
  955.     macros to be expanded be delimited by % signs,
  956.     and cleaned up the definitions. Changed
  957.     "SECTION FOO" to "FOO". Added -purec compilation
  958.     option.
  959. filesys.c:
  960.     Fixed a bug in changedrv (there was no
  961.     check to see if "d" was a BIOS drive before
  962.     aliasdrv[d] was tested).
  963.  
  964. PATCHLEVEL 7::
  965.  
  966. biosfs.c,fasttext.c:
  967.     Fixed incorrect code that assumed TCURSON
  968.     was 0.
  969. makefile:
  970.     Fixed Makefile to work with older versions
  971.     of gmake, as well as generic make programs.
  972.  
  973. PATCHLEVEL 6::
  974.  
  975. *.s:
  976.     Radical overhaul of how assembly language is
  977.     handled. We now provide 2 utility programs,
  978.     "genmagic" (for producing symbolic names for
  979.     various offsets into structures) and "asmtrans"
  980.     (for processing .spp files, replacing macros
  981.     defined by "genmagic" and optionally translating
  982.     Motorola to MIT syntax). Now we only have to
  983.     maintain the .spp files; the Lattice and gcc
  984.     versions of the .s files are generated automatically,
  985.     and as a side benefit we can get rid of magic
  986.     numbers in the .s files and be sure that if we
  987.     change proc.h, the assembly language will be
  988.     updated properly.
  989. main.c,filesys.c,file.h:
  990.     Added a new command to mint.cnf, "alias", to
  991.     enable aliases for pseudo (and other) drives
  992.     to be created. Also, deleted drives q:, v:, and
  993.     x:. Programs should no longer be using these;
  994.     if they are, users can put things like
  995.     "alias q: u:\pipe" into mint.cnf.
  996. file.h:
  997.     Fixed the definitions for TCURSON and TCURSOFF.
  998. console.c:
  999.     Moved the handle checks in file_* functions into
  1000.     separate functions, since for example we *know*
  1001.     that handle 0 falls within the legal range; this
  1002.     should remove a bit of overhead on BIOS and
  1003.     single character GEMDOS I/O.
  1004. main.c:
  1005.     Got rid of the zeroexit() code; since we now
  1006.     allow the whole boot process to be aborted by
  1007.     right shift.
  1008. pipefs.c:
  1009.     Allow Cursconf() to work on TOSWIN pipes.
  1010. mem.c:
  1011.     Check the date and time of shared text regions
  1012.     before re-using them.
  1013. bios.c,syscall.s:
  1014.     Changed the trap #13 entry point to allow quick
  1015.     evaluation of BIOS functions that don't need
  1016.     the full context save/restore done.
  1017. everywhere:
  1018.     Macro-ize TRACE and DEBUG so that it's possible
  1019.     to produce a smaller version of MiNT without
  1020.     them.
  1021. biosfs.c:
  1022.     Don't check for keyboard presses after every
  1023.     BIOS write, it's too time consuming.
  1024.  
  1025. PATCHLEVEL 5::
  1026.  
  1027. mem.c:
  1028.     Another bug: we shouldn't do the dLibs Pexec
  1029.     hack on the first process we start up, because
  1030.     it means messing with the MiNT basepage (which
  1031.     is not ours to mess with, it's TOS's).
  1032. main.c:
  1033.     Fixed bug in enter_kernel (rootproc->base is no
  1034.     longer necessarily MiNT's basepage).
  1035. various places:
  1036.     Tried to remove gcc warnings about constant
  1037.     expression overflow.
  1038. syscall.s:
  1039.     Applied Alex's patch to allow trace mode to work
  1040.     with non-MiNT debuggers.
  1041. various places:
  1042.     Applied Alex's patches to get rid of Lattice warnings
  1043.     about unneeded assignments.
  1044. mem.c:
  1045.     Added extra traces to exec_region() in an effort to
  1046.     track down the mysterious crash problems that others
  1047.     have had.
  1048.  
  1049. PATCHLEVEL 4::
  1050.  
  1051. dosmem.c:
  1052.     Made do_vfork not bother to save shared text regions.
  1053. bios.c:
  1054.     Made Rwabs respect Dlock.
  1055. tosfs.c:
  1056.     Made the TOS media change routines lazier (actual
  1057.     disk access is deferred until the disk is next
  1058.     needed).
  1059. main.c:
  1060.     Applied Alex's patches for setenv.
  1061. everywhere:
  1062.     Applied Julian's patches for Pure/Turbo C. The
  1063.     resulting kernel doesn't actually work yet, but
  1064.     at least we don't get so many error messages when
  1065.     compiling. (Who needs lint when you have three
  1066.     fussy ANSI compilers?)
  1067. mint.h:
  1068.     Oops; we should have had #include "inline.h" here.
  1069. inline.h:
  1070.     Applied jrb's GCC patches, and Alex's Lattice patches.
  1071.  
  1072. PATCHLEVEL 3::
  1073.  
  1074. bios.c:
  1075.     Some optimizations in bflush(). I tried something like
  1076.     this before, but messed up the terminal output modes.
  1077.     Let's hope I got it right this time. Also:
  1078.     removed some dependencies on sizeof(int).
  1079. makefile:
  1080.     Tried -O2 instead of -O. It seems to work, so let's
  1081.     leave it on for now.
  1082. inline.h:
  1083.     New file to keep short, inlined versions of frequently
  1084.     called functions.
  1085. intr.s:
  1086.     Check the floppy disk locking flag before doing a
  1087.     pre-emption. Not really necessary now, but it doesn't
  1088.     hurt to be careful.
  1089. dosfile.c,*fs.c:
  1090.     Applied Alex's F_SETLKW patches. If Alex isn't careful,
  1091.     he's going to make MiNT Posix compliant on us :-).
  1092. dosmem.c:
  1093.     Applied Alex's patches to add a Pwaitpid system call.
  1094. main.c:
  1095.     If running from the AUTO folder, adjust the basepage
  1096.     chains so that MiNT is invisible to programs that
  1097.     (incorrectly!) make assumptions about basepages.
  1098. proc.c:
  1099.     Some optimizations in do_wakeup.
  1100. filesys.c:
  1101.     Don't call (*fs->dskchng)() twice when a disk
  1102.     change is detected.
  1103. main.c:
  1104.     Make sure the _resvalid system variable has the
  1105.     correct magic number in it for indicating that
  1106.     we want to catch the reset.
  1107.  
  1108. PATCHLEVEL 2::
  1109.  
  1110. dosdir.c:
  1111.     Really forbid deleting other process' current
  1112.     directories (the actual "return EACCDN" was missing!)
  1113. proc.c:
  1114.     Inlined the check_time() function, and re-arranged
  1115.     do_wakeup_things a bit to be more efficient.
  1116. syscall.s:
  1117.     Streamlined a bit; things are now kept in registers
  1118.     where possible.
  1119. filesys.c:
  1120.     When loading file systems at startup time, don't
  1121.     check the \MINT directory if that's the current one.
  1122. filesys.c:
  1123.     After a media change, instead of throwing away all
  1124.     handles that pointed to the changed drive, make
  1125.     them point to /dev/null instead, so that they
  1126.     won't be re-used until the user explicitly closes
  1127.     them.
  1128. dosdir.c:
  1129.     Allow Dlock() to succeed even if there is an
  1130.     unfinished Fsfirst/Fsnext sequence on the drive.
  1131. mem.c:
  1132.     Allow relocations outside of the program load area;
  1133.     apparently, some programs actually need these.
  1134. mem.c:
  1135.     Insert some sanity checks on memory addresses.
  1136. signal.c:
  1137.     Restart check_sigs if the process stopped because of
  1138.     a signal, since the parent may reset the set of
  1139.     pending signals.
  1140. cpu.s:
  1141.     New file from Alex, to control caching &c.
  1142. various places:
  1143.     More debugging patches from Alex, to make attaching
  1144.     to existing processes work correctly.
  1145.  
  1146. PATCHLEVEL 1::
  1147.  
  1148. various places:
  1149.     Cleaned up the debugging stuff a bit. For example, if a
  1150.     process does PTRACESFLAGS on itself, it's the same
  1151.     as if the parent did; also, if the process does a
  1152.     Pexec with overlay (i.e. Unix exec()) then it stops
  1153.     before its first instruction. This makes emulating
  1154.     the Unix ptrace() system call much easier.
  1155.  
  1156. PATCHLEVEL 0::
  1157.  
  1158. biosfs.c:
  1159.     Changed Fcntl TIOCISPEED/TIOCOSPEED to return the
  1160.     next lowest legal baud rate if an illegal one is
  1161.     specified.
  1162. filesys.c:
  1163.     Fix a bug that would cause an infinite loop if a
  1164.     bad .XFS format is encountered.
  1165. mem.c,mem.h,dosmem.c:
  1166.     Implemented shared text; if the appropriate bit
  1167.     (for now, 0x800) in the program header is set, then
  1168.     the loader will set up a shared text region for
  1169.     the program, and subsequent executions of it will
  1170.     run out of the same text segment. Note that this
  1171.     does require appropriate compiler support!
  1172. filesys.c:
  1173.     Fixed bug in the way directory searches are closed
  1174.     after a media change.
  1175. biosfs.c,intr.s:
  1176.     Applied Julian's third mouse button patch for
  1177.     /dev/mouse.
  1178. *.s:
  1179.     Applied Alex's debugging patches. Also: wrote a
  1180.     Motorola->MIT syntax converter, so that we only
  1181.     have to maintain the stuff in the "asm" directory.
  1182. signal.c,proc.h,procfs.c,etc.:
  1183.     Applied Alex's debugging patches, with a few
  1184.     slight modifications.
  1185.  
  1186. version 0.95
  1187.  
  1188. PATCHLEVEL14::
  1189.  
  1190.  
  1191. filesys.c:
  1192.     Check for the existence of the \MINT directory before
  1193.     trying to load .XFS files from there.
  1194.  
  1195. --- patchlevel 13 released to the public ---
  1196.  
  1197. PATCHLEVEL13::
  1198.  
  1199. proto.h,filesys.c:
  1200.     Added Alex's patches for Lattice.
  1201.  
  1202. PATCHLEVEL12::
  1203.  
  1204. dosdir.c:
  1205.     Fsnext() on symbolic links was broken, because
  1206.     relpath2cookie no longer checks drive letters
  1207.     unless "depth" is > 0. Fixed this. (why did
  1208.     we change relpath2cookie that way?? this is
  1209.     changed back in 0.99pl2)
  1210. main.c,filesys.c:
  1211.     Added support for putting the mint.cnf file
  1212.     and any *.XFS files into the directory \mint.
  1213. dos.c:
  1214.     Added Pgeteuid() and Pgetegid() system calls.
  1215. main.c:
  1216.     Fixed the "set current directory" code to
  1217.     work properly.
  1218. main.c:
  1219.     Added a sanity check; if GEM is already running,
  1220.     don't try to run it again.
  1221. procfs.c:
  1222.     Added FIONWRITE and FIONREAD ioctl calls.
  1223. proc.c,bios.c:
  1224.     Fixed the type of the critical error handler.
  1225. dosfile.c,file.h,proc.c:
  1226.     Added Alex's patches for O_APPEND and O_NOINHERIT.
  1227. shmfs.c:
  1228.     Fixed lseek() on shared memory segments, and added
  1229.     FIONWRITE and FIONREAD ioctl calls.
  1230. fasttext.c:
  1231.     Tried once again to tame the wild cursor.
  1232. dosmem.c,proc.c:
  1233.     Modified process startup code so that PROC structures are no
  1234.     longer kept forever by the kernel (which should help alleviate
  1235.     memory fragmentation problems a bit).
  1236.  
  1237. PATCHLEVEL11::
  1238.  
  1239. dosmem.c:
  1240.     Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for
  1241.     forgetting C's precedence rules; thanks, Alex!).
  1242. filesys.c:
  1243.     Fixed relpath2cookie so that names like "C:\Z:" aren't
  1244.     interpreted as referring to drive Z:.
  1245. fasttext.c:
  1246.     Restored the "turn on cursor when opening()" code, because
  1247.     without it the fasttext driver and BIOS aren't in sync.
  1248. main.c:
  1249.     Moved the check for the presence of an already existing MiNT
  1250.     cookie to earlier in the initialization process, so that
  1251.     the error message can be printed properly.
  1252. shmfs.c:
  1253.     Fixed Dpathconf() on U:\SHM (filenames are truncated automatically
  1254.     on that file system) and corrected the comment there.
  1255. syscall.s:
  1256.     New function, call_aes, used to check for the presence of GEM
  1257.     (so we can tell whether or not we're running from the AUTO folder).
  1258. main.c:
  1259.     Run any programs which come after mint.prg in the AUTO
  1260.     folder.
  1261. version.h:
  1262.     Changed so that the patchlevel is always printed on boot-up.
  1263.  
  1264. PATCHLEVEL10::
  1265.  
  1266. unifs.c:
  1267.     Add U:\SHM as an interface for shared memory.
  1268. shmfs.c:
  1269.     New file system for doing shared memory.
  1270. xbios.c:
  1271.     Fixed Bconmap() to always return an error if the underlying
  1272.     TOS doesn't support Bconmap.
  1273. main.c:
  1274.     Fixed a bug in the argument parsing code for the "exec"
  1275.     command in mint.cnf.
  1276. dosdir.c:
  1277.     Changed Dlock() to return ELOCKED if an attempt is made to
  1278.     lock a drive that's already locked, and ENSLOCK if an attempt
  1279.     is made to remove a non-existent lock.
  1280. version.h:
  1281.     I forgot again to update this. Aargh!
  1282.  
  1283. PATCHLEVEL9::
  1284.  
  1285. mem.c,mem.h:
  1286.     Align everything on 16 byte boundaries.
  1287. mem.c,dosmem.c:
  1288.     Actually fix the "memory being allocated twice" bug.
  1289.     The problem was that setting m->links to 0 before calling
  1290.     attach_region was a no-no.
  1291.  
  1292. PATCHLEVEL8::
  1293.  
  1294. mem.c:
  1295.     Attempt to fix the strange "memory being allocated
  1296.     twice" bug.
  1297. tosfs.c:
  1298.     Truncating names at 14 characters came *before* the
  1299.     8.3 kludge, which meant that long names were being
  1300.     interpreted incorrectly (e.g. gcc-cc1plus.ttp was
  1301.     becoming "gcc-cc1p.tt"). Temporary kludge: only
  1302.     truncate at 32 characters. Long term solution:
  1303.     re-write this code to do the 8.3 truncation at the
  1304.     same time as the truncation.
  1305. main.c, proc.h:
  1306.     Provide a more explicit type for criticerr.
  1307. proc.c:
  1308.     Don't make _logbase per-process if hardware scrolling
  1309.     is active, since this makes for all kinds of weirdness!
  1310. mem.c:
  1311.     Allow NULL commandline to be the same as an empty
  1312.     string. (It was acting this way before, due to the MiNT
  1313.     library strncpy; now that we use our own strncpy some
  1314.     programs were passing funny arguments.)
  1315. dosmem.c:
  1316.     Provide a more detailed trace of Pexec activity.
  1317. mem.c:
  1318.     Added a sanity check in get_region().
  1319. proc.c:
  1320.     Set the time/date stamp of process 0 to the
  1321.     date & time when the system was booted.
  1322. fasttext.c:
  1323.     Commented out the code that turns the cursor
  1324.     on when u:\dev\fasttext is opened.
  1325. tty.c:
  1326.     Unsigned characters are always >= 0, so we
  1327.     don't need to check this.
  1328.  
  1329. PATCHLEVEL7::
  1330.  
  1331. makefile.lcc,mintlc.prj:
  1332.     Added Alex's patches.
  1333. assert.h:
  1334.     Added Alex's patch to cast the result to void.
  1335. filesys.c:
  1336.     Make sure the file system media change routine
  1337.     is called every time a disk change is forced;
  1338.     this corrects the Dlock() bug (it wasn't forcing
  1339.     media change as it should have).
  1340. version.h:
  1341.     Oops! I forgot to increment this for pl6, so
  1342.     it jumps by 2 this time.
  1343.  
  1344. PATCHLEVEL6::
  1345.  
  1346. biosfs.c,pipefs.c,tty.c:
  1347.     New Fcntl calls for controlling terminal baud
  1348.     rates and flags such as parity and stop bits.
  1349.     These have been integrated with the old TIOC*
  1350.     calls where applicable.
  1351. dosfile.c:
  1352.     Changed Fcntl to make a call to tty_ioctl be the
  1353.     default if the device is a terminal and the device
  1354.     ioctl routine returns EINVFN.
  1355. procfs.c, proc.c:
  1356.     The date/time stamp of a process now shows when the
  1357.     process was started, rather than being the number
  1358.     of seconds of CPU time used.
  1359. tosfs.c:
  1360.     Degrade an ALERT to a TRACE; there is a circumstance
  1361.     in which a root directory can apparently be changed,
  1362.     and that's when a program tries to open an empty
  1363.     file name. We don't need to warn the user that
  1364.     something is wrong in this case; we can just fail
  1365.     silently.
  1366. proc.c:
  1367.     Save the logical screen base for each process.
  1368. main.c,bios.c,proc.h:
  1369.     Made the critical error handler per-process.
  1370. bios.c,syscall.s:
  1371.     A cleaner way of saving registers when calling
  1372.     functions... this wasn't really necessary, but I
  1373.     did it to make tracking a bug down easier.
  1374. tty.c:
  1375.     New terminal flag, T_NOFLUSH, to suppress flushing of
  1376.     input when SIGINT or SIGQUIT is received.
  1377. *fs.c, file.h:
  1378.     Added a new Dpathconf() option that tells whether or
  1379.     not a file system is case sensitive.
  1380. dos.c:
  1381.     Forbid Prenice() on processes that you don't own.
  1382. dosmem.c:
  1383.     Correct a typo that was causing terminal process groups
  1384.     to be incorrectly set.
  1385.  
  1386. PATCHLEVEL5::
  1387.  
  1388. makefile:
  1389.     The -DOWN_LIB declaration should have been on (actually,
  1390.     it was, in my copy... sorry for the mix-up).
  1391. fasttext.c:
  1392.     Applied Alex's patch for the disappearing cursor bug.
  1393. everywhere:
  1394.     Applied Alex's patches to add "const" declarations where
  1395.     appropriate, and to get rid of size_t (since if OWN_LIB
  1396.     is defined we use "int" instead).
  1397. dosmem.c:
  1398.     Fixed M_KEEP to attach memory to rootproc *only* at
  1399.     process termination.
  1400.  
  1401.  
  1402. PATCHLEVEL4::
  1403.  
  1404. proto.h:
  1405.     Added prototype for do_func_key().
  1406. everywhere:
  1407.     Applied apratt's debugging/trace patches.
  1408.  
  1409. PATCHLEVEL3::
  1410.  
  1411. xbios.c, biosfs.c:
  1412.     Change Bconmap to actually do the equivalent of an
  1413.     Fforce(-2, foo) call; this way, we don't need the
  1414.     ugly DFLTMODM kludge. (On the other hand, we introduce
  1415.     some new ugly kludges :-)).
  1416. main.c,proc.c:
  1417.     Wait until everything is initialized before opening
  1418.     devices; this avoids bogus critical error messages from
  1419.     AHDI.
  1420. util.c, mint.h, ctype.h:
  1421.     Add all sorts of utility routines (for string processing,
  1422.     character type recognition, and the like). This is
  1423.     designed to make sure that MiNT works the same regardless
  1424.     of what library is used to compile it. We're not quite
  1425.     totally independent of library yet (the startup code and
  1426.     <osbind.h> aren't replaced) but we're pretty close.
  1427. main.c, proc.c:
  1428.     Initialize the current directory for the root
  1429.     process *after* file systems have been loaded, since
  1430.     otherwise the info is nuked when a new fs is loaded in.
  1431. bios.c:
  1432.     Allow output to BIOS device 5 to be redirected along
  1433.     with BIOS device 2; we do this by using the MW
  1434.     ESC-Q control sequence to quote characters. A bit of
  1435.     a hack, but then, not many people use device 5.
  1436. quickmov.s:
  1437.     Fixed two bugs in quickmove: (1) it didn't work for
  1438.     regions bigger than 0x00fffe00 bytes in length,
  1439.     and (2) it assumed the length was a multiple of 4
  1440.     bytes.
  1441. fasttext.c:
  1442.     Re-arrange things a bit to get rid of a gcc 2.1 warning.
  1443. dosmem.c:
  1444.     Change flag 0x4000 to mean "don't free the memory
  1445.     automatically on process termination"; explicit
  1446.     Mfree requests are still allowed, and after
  1447.     termination *any* process may Mfree the memory.
  1448.  
  1449. PATCHLEVEL2::
  1450.  
  1451. makefile:
  1452.     Remove -fcombine-regs from CFLAGS, since gcc 2.1
  1453.     doesn't understand it.
  1454. bios.c:
  1455.     Ignore value returned by Bconout for the screen
  1456.     (many text accelerators get this wrong :-( ).
  1457. dossig.c, signal.h:
  1458.     New system call, Psigaction(), by AGK. 
  1459. xbios.c:
  1460.     Added support for Bconmap.
  1461. bios.c, biosfs.c:
  1462.     Rationalized the way biosfs and bios interact;
  1463.     no more funny device numbers are needed. Also:
  1464.     added support for Bconmap, and a new default
  1465.     modem device.
  1466. pipefs.c:
  1467.     Applied Michael Hohmuth's patch for pipe_close (thanks,
  1468.     Michael!)
  1469. filesys.c:
  1470.     Don't try to initialize all the drives at boot time; path2cookie
  1471.     is quite capable of initializing, and it saves having
  1472.     to access drive B: (for example) while booting is going
  1473.     on.
  1474. main.c:
  1475.     Allow the user to avoid booting MiNT if the right shift key
  1476.     is held down.
  1477. main.c:
  1478.     Added safety checking, as suggested by AKP.
  1479. dosmem.c:
  1480.     In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable
  1481.     memory (we do this by attaching the memory to the root process).
  1482. fasttext.c:
  1483.     Tabs should be non-destructive on the ST!
  1484. proc.h:
  1485.     Re-arranged some things. Note that "slices" was never supposed
  1486.     to be visible to users! Also, added a "bconmap" variable to
  1487.     give the current Bconmap mapping for the process.
  1488. dosdir.c:
  1489.     Fail Ddelete of current directories only on the current
  1490.     drive; for other drives, reset the current directory
  1491.     to the root directory. NOTE: Ddelete of a current directory
  1492.     is forbidden only if the directory is someone else's
  1493.     current directory; if it's only your current dir., you
  1494.     can delete it (and get automatically bumped back to
  1495.     root).
  1496.  
  1497. PATCHLEVEL1::
  1498.  
  1499. dosmem.c:
  1500.     Fixed a bug that caused processes with no '.' in their names
  1501.     to have the wrong process name.
  1502. dosmem.c:
  1503.     In Pexec, make sure we yield to the new process so that
  1504.     it gets at least one timeslice to do an Mshrink().
  1505. proc.c:
  1506.     In preempt(), don't punish processes that have buffered
  1507.     BIOS output and are preempted; the process of flushing the
  1508.     buffer may very well put them to sleep, and in any event
  1509.     processes doing I/O should not be considered "hogs".
  1510. tosfs.c:
  1511.     Don't look for volume labels in opendir/readdir/lookup etc.
  1512. main.c:
  1513.     AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.
  1514. dossig.c:
  1515.     New system call (Psigpause()) courtesy of Alex Kiernan.
  1516. dosmem.c:
  1517.     In Pexec(200,...), don't reset base->p_parent, since the
  1518.     "parent" in an overlay exec is oneself.
  1519. tty.c:
  1520.     Fixed so that RAW mode reads will return all of an
  1521.     extended escape sequence at once, rather than waiting
  1522.     for the next read.
  1523. dosmem.c:
  1524.     When terminating a process, make sure that it's "number of
  1525.     memory regions" is set to 0; otherwise, calls to memused()
  1526.     on the process (e.g. by procfs) can crash the system.
  1527. dosdir.c:
  1528.     When removing directories, make sure that the directory
  1529.     isn't in use as someone's current directory (so that
  1530.     they don't get left in limbo).
  1531. fasttext.c:
  1532.     Screen memory must come from ST RAM -- otherwise hardware
  1533.     scrolling crashes and burns. Fixed thanks to AGK.
  1534. xbios.c:
  1535.     Moved the prototype for midiws to proto.h, and corrected the
  1536.     type of its argument (it should have been "int", not "short").
  1537.  
  1538. PATCHLEVEL0::
  1539.  
  1540. bios.c:
  1541.     Terminal modes weren't being set correctly in Bconout, and also
  1542.     weren't being set in bflush (which should have employed RAW
  1543.     mode output, but didn't).
  1544. everywhere:
  1545.     Merged in Alex Kiernan's latest Lattice C patches.
  1546.  
  1547.  
  1548. version 0.94
  1549.  
  1550. PATCHLEVEL4::
  1551.  
  1552. filesys.c:
  1553.     Use U:\DEV\CON for CON:, instead of V:\CON, since we're
  1554.     going to make drive V: go away soon.
  1555. unifs.c:
  1556.     When looking up a drive, make sure that it has a valid file
  1557.     system attached to it -- otherwise, newly installed ramdisks
  1558.     can cause system crashes :-(.
  1559. fasttext.c:
  1560.     Patches to make the fast text device work correctly on a TT,
  1561.     courtesy of Erling Henanger.
  1562. main.c:
  1563.     Install 16 extra cookies, instead of 8, just to be friendly.
  1564.  
  1565. PATCHLEVEL3::
  1566.  
  1567. main.c:
  1568.     Allow PSEUDODRIVES=MAP to put the extra drives in
  1569.     _drvbits without installing new drivers for them.
  1570. unifs.c:
  1571.     Don't rely on drvmap() to figure out what drives exist;
  1572.     it isn't accurate if PSEUDODRIVES=NO.
  1573.  
  1574. PATCHLEVEL2::
  1575.  
  1576. main.c:
  1577.     Added an option for turning off the BIOS routines for the
  1578.     pseudo-drives.
  1579. filesys.c:
  1580.     Moved the vector set/restore code to main.c (where all the
  1581.     other vector stuff is).
  1582. tosfs.c:
  1583.     If the _FLK cookie was already set when MiNT started, we
  1584.     pass file sharing and locking requests through to GEMDOS.
  1585. main.c:
  1586.     Turn the cursor off when leaving, if we were started from
  1587.     the desktop.
  1588. tosfs.c:
  1589.     Fixed a bug in which tos_chmode was returning an incorrect
  1590.     value.
  1591. debug.c:
  1592.     Added code for octal output to sprintf().
  1593. dosdir.c:
  1594.     Make Fsfirst() with the FA_LABEL bit set work on non-TOS
  1595.     file systems (via the file system readlabel function).
  1596.     (This used to work only when the search was restricted to
  1597.     labels only.)
  1598. various places:
  1599.     Get rid of gcc 2.0 warnings.
  1600.  
  1601. PATCHLEVEL1::
  1602.  
  1603. file.h:
  1604.     Because Fmidipipe and the disk change code can close
  1605.     files other than the files of the current process,
  1606.     the device driver "close" function needs another
  1607.     parameter, namely the process id being closed; this
  1608.     allows device drivers to remove locks properly.
  1609. tosfs.c:
  1610.     Volume labels shouldn't be found by Dreaddir().
  1611. tosfs.c:
  1612.     Added file locking.
  1613. filesys.c, main.c, file.h:
  1614.     New utility routine (denylock) to make implementing file
  1615.     locking easier for file systems.
  1616.  
  1617. PATCHLEVEL0::
  1618.  
  1619. tosfs.c:
  1620.     Canonicalize file names (i.e. convert to 8.3 format).
  1621.     Also, keep track of the value returned from the last
  1622.     readdir() call, so that a subsequent Fxattr() will take
  1623.     place quickly.
  1624. proc.c:
  1625.     In sleep(), make sure interrupts are disabled while queue
  1626.     manipulations are occuring.
  1627. bios.c:
  1628.     Correct a stuttering problem for ^C and similar interrupts.
  1629. dosmem.c:
  1630.     8 character process names weren't terminated properly.
  1631. tty.c:
  1632.     Aaargh! Shift+cursor keys were being interpreted even when
  1633.     they shouldn't have been.
  1634.  
  1635. version 0.93
  1636.  
  1637. PATCHLEVEL6::
  1638.  
  1639. filesys.c:
  1640.     Check for newly installed drives when parsing an
  1641.     absolute path without an explicit drive letter, as
  1642.     well as when looking at ones with drive letters.
  1643.  
  1644. PATCHLEVEL5::
  1645.  
  1646. biosfs.c, fasttext.c:
  1647.     Allow TIOCGWINSZ calls on the console (we use the line A
  1648.     variables to get the number or rows and columns).
  1649. filesys.c:
  1650.     Fix a typo in the file system initialization checking.
  1651. pipefs.c:
  1652.     Make "VIRGIN_PIPE" more obviously a magic value, and
  1653.     document it.
  1654. pipefs.c:
  1655.     Make u:\pipe have a sensible date/time; also, make
  1656.     Dfree on u:\pipe return some useful statistics about
  1657.     the number of pipes in the system.
  1658. procfs.c:
  1659.     u:\proc has a sensible time and date now, namely the
  1660.     time/date of the last process creation or destruction.
  1661. dosfile.c:
  1662.     Fcreate() of a volume label now returns a handle to
  1663.     u:\dev\null.
  1664. dosmem.c:
  1665.     Make sure the BIOSBUF buffer is flushed when terminating.
  1666. main.c:
  1667.     There's a bug in TOS 1.4: GEM seems to assume that all
  1668.     memory is zero initially, and if it isn't (e.g. if a large
  1669.     AUTO folder program like MiNT terminates and leaves behind
  1670.     dirty memory) then having too many (or the wrong kind of)
  1671.     desk accessories can lead to a crash. This was a real bear
  1672.     to track down, and the work-around is very ugly; before
  1673.     MiNT exits we copy a short machine language subroutine into
  1674.     the command line, and then execute it; the routine zeros
  1675.     all of the TPA and then does a Pterm0().
  1676. rendez.c:
  1677.     Change a "short" to "int" for the benefit of gcc 2.0.
  1678. bios.c:
  1679.     Stop process dumps from stuttering.
  1680. console.c:
  1681.     Added support for global file handles.
  1682.  
  1683. PATCHLEVEL4::
  1684.  
  1685. dosfile.c:
  1686.     In Fselect(), we have to re-validate file handles after
  1687.     a sleep() call, since signal handlers may close files.
  1688. proc.c:
  1689.     Pre-allocate more PROC structures (this should help
  1690.     reduce memory fragmentation).
  1691. tty.c, file.h:
  1692.     Allow cursor/function keys to send escape sequences.
  1693. dosdir.c:
  1694.     As suggested by S. Henson: Dsetpath through a symbolic link
  1695.     may also require changing the current drive as well.
  1696. proc.c,dos.c,timeout.c:
  1697.     New process scheduling algorithm, as suggested by A. Pratt.
  1698. dosdir.c:
  1699.     Make only the low bit of Dlock() significant, for future
  1700.     expansion.
  1701. dosfile.c:
  1702.     Allow Fcreate() to create a global file handle.
  1703.  
  1704. PATCHLEVEL3::
  1705.  
  1706. debug.c:
  1707.     Changed TRACE mode output so that not just any keys will
  1708.     start/stop output, but only Help and Undo.
  1709. dosdir.c, filesys.c:
  1710.     Add a Dlock() system call to lock/unlock drives.
  1711. filesys.c:
  1712.     Only initialize drives if the BIOS drive map says that
  1713.     they exist.
  1714. dosmem.c:
  1715.     In Pexec, make a copy of any name we're going to use
  1716.     before freeing memory for overlayed programs; the old
  1717.     way was decidedly incorrect!
  1718. dosfile.c:
  1719.     Allow for global file handles, so that shared libraries
  1720.     can use file handles that are the same for all processes.
  1721. dosmem.c:
  1722.     In Mxalloc, ignore bits that we don't understand, to
  1723.     allow for future expansion.
  1724. syscall.s:
  1725.     Fix a bug that could cause the wrong system call to be
  1726.     made if BIOS buffering is on (!).
  1727. bios.c:
  1728.     Streamline the BIOS buffering mechanism, and make it
  1729.     more conservative about multiple processes doing Bconout
  1730.     output.
  1731. procfs.c:
  1732.     Allow "foo.-1" to stand for the current process, and
  1733.     "foo.-2" to stand for our parent. Also, add new
  1734.     Fcntls for getting/setting memory flags.
  1735. bios.c:
  1736.     In Setexc(), don't actually change any vectors, let the BIOS
  1737.     do it -- some TSR's install trap handlers that look for
  1738.     certain Setexc functions...
  1739. signal.c:
  1740.     Allow nested Supexec() calls, or Supexec()'s from a terminate
  1741.     vector.
  1742. procfs.c:
  1743.     Change the definition of PPROCADDR and add a new Fcntl,
  1744.     PCTXTSIZE.
  1745. mem.c:
  1746.     In exec_region, set the stack based on the value of p_hitpa
  1747.     from the basepage, instead of the size of the memory
  1748.     region -- some programs rely on being able to set the initial
  1749.     stack pointer for a Pexec(4,...) this way.
  1750. main.c, context.s:
  1751.     Avoid using 68020 instructions if we're on a 68010.
  1752.  
  1753. PATCHLEVEL2::
  1754.  
  1755. dos.c,proc.c:
  1756.     More tweaking of the priority code.
  1757. main.c:
  1758.     Change the type of "tosbp" from char ** to BASEPAGE **,
  1759.     since that's what it really is.
  1760. main.c:
  1761.     Add a special case for the Spanish TOS 1.0 act_pd variable.
  1762. pipefs.c:
  1763.     When a writer is waiting to write a small amount of data
  1764.     atomically, remember to wake up readers so that they
  1765.     can clear the pipe!
  1766. debug.c:
  1767.     Add the %u flag to ksprintf() (Fselect uses it, maybe others
  1768.     do too...)
  1769. dosmem.c:
  1770.     In Pterm(), put the exit code onto the stack when calling
  1771.     etv_term. It won't be in the same place as it was for TOS,
  1772.     but c'est la vie. (People asked for this feature...)
  1773. xbios.c:
  1774.     Provide a way to pass arguments to Supexec(). Note that Atari
  1775.     never documented that this was possible, but some people were
  1776.     relying on it anyway :-(. (Don't use this feature, it's only
  1777.     there as a compatibility hack.)
  1778. main.c:
  1779.     In shutdown(), don't bother waiting a second for processes
  1780.     to finish if there are no other processes.
  1781. filesys.c:
  1782.     Make sure that path names are null terminated after strncpy.
  1783. mem.c:
  1784.     Fix the code to zero process registers so that it *only* zeros
  1785.     process registers.
  1786. dosmem.c:
  1787.     Eliminate some redundant code.
  1788. dosfile.c:
  1789.     Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.
  1790. main.c:
  1791.     Change a "malloc" into "kmalloc", and restore the #include
  1792.     of <minimal.h> that was inadvertently deleted.
  1793. main.c:
  1794.     Allow parameters to be passed to the initial program specified
  1795.     by the INIT= string.
  1796.  
  1797. PATCHLEVEL1::
  1798.  
  1799. main.c:
  1800.     Fix a typo in shutdown() that was causing problems when
  1801.     MiNT was shut down while processes were active.
  1802. tosfs.c:
  1803.     Make sure that tfullpath() returns a string less than
  1804.     PATH_MAX characters long.
  1805. everywhere:
  1806.     Replace "sprintf" with "ksprintf".
  1807. debug.c:
  1808.     Add a "ksprintf" function that's like sprintf(), but
  1809.     (a) doesn't have so many features (making it smaller),
  1810.     and more importantly (b) won't try to write more than
  1811.     SPRINTF_MAX characters into a buffer.
  1812. filesys.c:
  1813.     In path2cookie, make sure we don't try to copy more than
  1814.     PATH_MAX characters into the fixed size buffers.
  1815. dosmem.c:
  1816.     The "sleep if no memory available during Malloc" code
  1817.     was causing more problems than it solved, so it was
  1818.     removed. To compensate, we increase the priority of
  1819.     newly Pexec'd processes to make sure that they get
  1820.     to run.
  1821. dosmem.c:
  1822.     Aaaargh! A very serious screw-up in terminate() was
  1823.     causing us to wake up processes sleeping in vfork()
  1824.     even when their children were still using the address
  1825.     space; needless to say, horrible (and mysterious)
  1826.     crashes could ensue. Fix: only force the parent awake
  1827.     if wait_q == WAIT_Q && wait_cond matches the terminating
  1828.     process, otherwise let post_sig() handle waking.
  1829.     While fixing this bug, re-arrange the terminate code
  1830.     to do the waking up at the very end, just in case some
  1831.     of the other code may cause a sleep() temporarily.
  1832. bios.c:
  1833.     Fix the scan code for the UNDO key.
  1834. fasttext.c:
  1835.     Use Setscreen() to set the hardware screen base, since setting
  1836.     the variable at 0x45e causes TOS to keep setting the screen base
  1837.     ad infinitum.
  1838.  
  1839. PATCHLEVEL0::
  1840.  
  1841. rendez.c:
  1842.     When waking a process up from a semaphore, check to see
  1843.     if it's on the WAIT_Q before trying to remove it from
  1844.     that queue (it might have been moved off the wait queue
  1845.     by a signal).
  1846. bios.c:
  1847.     Make sure that Bconout(2,c) always succeeds, to compensate
  1848.     for text accelerators and other programs that don't return
  1849.     sensible values from Bconout. Also, ignore the Bconout
  1850.     return value when flushing the text output buffer.
  1851.  
  1852. version 0.92
  1853.  
  1854. PATCHLEVEL4::
  1855.  
  1856. biosfs.c:
  1857.     Provide devices for the extra Mega STe serial ports.
  1858. biosfs.c:
  1859.     Make the kernel info structure available to device drivers
  1860.     loaded with Dcntl.
  1861. xbios.c:
  1862.     Provide a modified Midiws function so that this is also
  1863.     affected by Fmidipipe and Fforce.
  1864. biosfs.c:
  1865.     Split bios_device into two device drivers; one for
  1866.     terminal devices, and one for plain character devices
  1867.     (the printer and IKBD port fall into this category).
  1868.     Also: provide a new Dcntl call to install plain BIOS
  1869.     devices in U:\DEV.
  1870. tty.c:
  1871.     Check for terminal start/stop keys while reading.
  1872. bios.c:
  1873.     In checkkeys, loop through all keys received since our last
  1874.     interrupt, rather than just checking the last thing in the
  1875.     buffer (as A. Pratt suggested).
  1876. bios.c, tty.c:
  1877.     Made the "disable" character for special terminal functions
  1878.     (e.g. the EOF key) be 0 instead of -1; this matches System V,
  1879.     is more POSIX friendly, and also makes confusing function keys
  1880.     and ^@ less likely. (Thanks to Scott Willingham for this
  1881.     suggestion.)
  1882. file.h, elsewhere as needed:
  1883.     Renamed the O_BIOS flag O_TTY (since that's what it really
  1884.     represents) and renamed the is_bios macro is_terminal.
  1885. dosmem.c:
  1886.     Make Pexec mode 106 cause the child to be truly independent
  1887.     of the parent (i.e. it doesn't get the parent's address space,
  1888.     nor does the parent get the child's).
  1889. biosfs.c:
  1890.     Allow symbolic links from U:\DEV; this lets us do things like
  1891.     Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").
  1892. main.c:
  1893.     When PRN=d:\foo is specified, create the file foo instead of
  1894.     just trying to open it; this makes no difference to devices,
  1895.     but makes redirecting printer output to a file much more
  1896.     convenient.
  1897. unifs.c:
  1898.     Fix a bug that was causing Dgetpath() to return incorrect
  1899.     information for U:\A.
  1900. timeout.c:
  1901.     Make sure "searchtime" is up-to-date; bconout uses this for
  1902.     the time out.
  1903. biosfs.c:
  1904.     Fix bios_write so that if bconout fails, so does the write.
  1905. bios.c:
  1906.     Fix bconout so that it doesn't hang forever if the device isn't
  1907.     going to be ready (e.g. the printer is off); instead, there's
  1908.     a 10 second timeout.
  1909. main.c:
  1910.     Send all processes SIGTERM when we're shutting down, so that
  1911.     they have a chance to clean up after themselves.
  1912. mint.h:
  1913.     The KBDVEC structure was missing the "clockvec" element (!).
  1914.  
  1915. PATCHLEVEL3::
  1916.  
  1917. biosfs.c:
  1918.     Revised to allow support for loading/removing device drivers
  1919.     dynamically, via a Dcntl() call.
  1920. dosmem.c,mem.c,dosfile.c,file.h:
  1921.     Added support for setuid/setgid. These bits are only checked
  1922.     in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.
  1923. rendez.c:
  1924.     Added new semaphore code from Allan Pratt.
  1925. main.c:
  1926.     New command for mint.cnf: "exec foo.prg bar" runs the program
  1927.     "foo" with argument(s) "bar".
  1928. main.c:
  1929.     Use the XBRA protocol for all interrupt routines that we grab.
  1930. filesys.c:
  1931.     When terminating MiNT, close all open files to make sure data
  1932.     is flushed and devices are nicely shut down.
  1933. main.c:
  1934.     Add some more variables, such as CON and PRN for redirecting
  1935.     those handles, and HARDSCROLL for controlling the fast text
  1936.     output.
  1937. proc.c:
  1938.     Make sure the "links" field for the prn and aux handles is
  1939.     correct.
  1940. syscall.s, bios.c:
  1941.     Special case the BIOS Bconout code to try to speed it up
  1942.     a bit. We allow for buffering of Bconout output; the buffer
  1943.     is flushed on the next non-Bconout system call or context
  1944.     switch. This should usually work OK, but as a precaution
  1945.     we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).
  1946. fasttext.c.fasttext.h:
  1947.     New files for a faster text output device; changes were
  1948.     made to biosfs.c to support this, too.
  1949. tty.c:
  1950.     Streamline writes to terminals by sending data to the
  1951.     tty device in chunks instead of 1 character at a time.
  1952. dosfile.c:
  1953.     In do_open, always return EFILNF, never EPTHNF.
  1954. dosmem.c:
  1955.     Use supexec() to execute the terminate vector code, to
  1956.     avoid duplication of signal 0 faking.
  1957. xbios.c:
  1958.     In Supexec() does leave the kernel, so we have to make
  1959.     appropriate adjustments. We do this by faking a signal
  1960.     (signal 0) and installing the user's function as a signal
  1961.     handler.
  1962. dosdir.c:
  1963.     Make Dfree(x) actually look at free space on the drive which
  1964.     corresponds to the current directory on <x>; this should make
  1965.     Dfree on drive U: much more useful.
  1966. proc.h:
  1967.     Make the "base" field of the PROC structure have type BASEPAGE *
  1968.     (since that's what it is!)
  1969. basepage.h, dosdir.c, dosmem.c:
  1970.     Support some undocumented fields in the basepage a little bit
  1971.     (i.e. they're read only). Programs that try to write to these
  1972.     fields break. Surprise, surprise.
  1973.  
  1974. PATCHLEVEL2::
  1975.  
  1976. dosmem.c, mem.c:
  1977.     The docs say that children started with Pexec(104,...) or
  1978.     Pexec(106,...) share the parent's memory. This was unfortunately
  1979.     not the case; if the parent exited and the child was running
  1980.     in the parent's address space (e.g. see tfork() in mntlib)
  1981.     the child died very soon thereafter (like when the next program
  1982.     comes along and clears the memory the child was running out of).
  1983.     This is now fixed.
  1984. dos.c, proc.c, timeout.c:
  1985.     More tuning of the process scheduler.
  1986. main.c:
  1987.     Added "setenv" function for mint.cnf.
  1988.  
  1989. PATCHLEVEL1::
  1990.  
  1991. filesys.c:
  1992.     In some circumstances, AHDI will keep telling us that a drive
  1993.     has changed, ad infinitum. To avoid this, we stop trying after
  1994.     8 media changes occur in a row.
  1995. util.c:
  1996.     Tuned the kmalloc() strategy to reduce memory fragmentation
  1997.     (every process will be allocating 264 bytes for its
  1998.     memory region maps right after creation, and this should
  1999.     come from kernel memory).
  2000. tty.c:
  2001.     Under TOS, 1 byte writes should always be in raw mode.
  2002. dos.c:
  2003.     In Syield(), we should call sleep() even if no other processes
  2004.     are waiting, just to make sure that signals, alarms, etc.
  2005.     are properly dealt with.
  2006. filesys.c, dosfile.c:
  2007.     The media change code was wedged (actually, the fault was in
  2008.     do_pclose, which sometimes neglected to check to see whether
  2009.     or not the file had a still-valid device driver).
  2010. dosmem.c:
  2011.     In the termination code, close "files" referring to a process
  2012.     *before* freeing all the process memory; that way, we don't
  2013.     have to worry in do_pclose() and other places about what
  2014.     kind of state the process is in.
  2015. mem.h:
  2016.     Round off memory regions only to a word boundary for better
  2017.     TOS compatibility.
  2018.  
  2019. PATCHLEVEL0::
  2020. dos.c,intr.s,syscall.s:
  2021.     Changed s_yield() to actually give up the processor if
  2022.     another process is waiting for it; this means that processes
  2023.     that call Syield() won't be penalized by the priority code.
  2024.     Also: added a new kernel function, preempt(), which does
  2025.     what the old s_yield() did (and hence penalizes CPU hogs).
  2026. makefile:
  2027.     Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.
  2028.  
  2029.  
  2030. version 0.91
  2031.  
  2032. dosmem.c:
  2033.     Only the high 4 bits of the program load flags give memory
  2034.     requirements (we were using 8 bits).
  2035. dosdir.c:
  2036.     Add a hack so that ksh still works (it was using '/' in a
  2037.     path name). THIS HACK WILL GO AWAY SOMEDAY!
  2038. tty.c:
  2039.     CBREAK mode shouldn't do erase, kill, or EOF processing.
  2040. dosdir.c:
  2041.     Freadlink should check first to make sure the file really
  2042.     is a link!
  2043. file.h,tty.c:
  2044.     Change the name "struct winsiz" to "struct winsize" to match
  2045.     what Unix calls it (cosmetic change only).
  2046. unifs.c:
  2047.     Allow renaming of the drives, and allow rmdir() to work
  2048.     like unlink() for symbolic links (since we fake the return
  2049.     value from Fsfirst to look like a directory if the link
  2050.     points to a directory).
  2051. biosfs.c:
  2052.     lseek() on the null device should not return 0 always;
  2053.     otherwise, it will look like a terminal to many programs!
  2054. dosfile.c:
  2055.     If a MiNT domain process closes stdin or stdout, they
  2056.     really do want them closed (for compatibility with
  2057.     MiNT 0.8).
  2058. syscall.s:
  2059.     When returning from traps, don't pre-empt the current process
  2060.     if it's in supervisor mode.
  2061. mem.c:
  2062.     Fake some stuff in the basepage so that programs compiled
  2063.     with dLibs will work some of the time.
  2064. tosfs.c:
  2065.     Make the value returned from Dgetpath() lower case in the MiNT
  2066.     domain. Also, make tosfs a little less verbose when debugging
  2067.     or tracing is on.
  2068. dosmem.c:
  2069.     Try to allocate space for saved fork() memory in the alternate (TT)
  2070.     memory map first, as well as in core (ST) memory.
  2071. mem.h:
  2072.     Round allocation requests up to multiples of 8 bytes instead
  2073.     of 4; this automatically gives us a bit of slush for ill
  2074.     behaved programs, and also means that requests will always
  2075.     be for a multiple of sizeof(double) bytes.
  2076. util.c:
  2077.     Get rid of the extra slush around kmalloc'd regions (which
  2078.     was a lot bigger than originally intended anyway!)
  2079.  
  2080.  
  2081. version 0.9
  2082.  
  2083. PATCHLEVEL21:: released version
  2084.  
  2085. dosmem.c:
  2086.     Make Malloc and Mxalloc try again if there isn't enough memory;
  2087.     maybe the situation is temporary.
  2088. mem.c:
  2089.     Plug a memory leak in load_region(); also make load_region try again
  2090.     if there isn't enough memory to load the program (just in case the
  2091.     situation is temporary).
  2092. dosdir.c:
  2093.     Add a check to Fattrib to make sure that attributes of directories
  2094.     are never changed.
  2095.  
  2096. PATCHLEVEL20::
  2097.  
  2098. dosdir.c:
  2099.     Allow Frenames of processes and other special kinds of files even
  2100.     if they do have the FA_RDONLY bit set.
  2101. dosfile.c:
  2102.     Allow creation of files with the read-only attribute.
  2103. tosfs.c:
  2104.     Change the file deletion code so that an attempt to delete an
  2105.     open file no longer fails, but rather marks the file to be
  2106.     deleted when it is closed.
  2107. file.h:
  2108.     Add some extra space to the tty struct, for future expansion.
  2109. filesys.c,main.c:
  2110.     Make sure the fake BIOS disk routines are available before
  2111.     any of the pseudo-drives are used, by having them set up
  2112.     in init_filesys() instead of init_intr().
  2113. tosfs.c:
  2114.     Remove some debugging output that isn't needed anymore.
  2115.  
  2116. PATCHLEVEL19::
  2117. Beta release.
  2118.  
  2119. intr.s,main.c:
  2120.     provide some fake BIOS disk routines for the pseudo-drives,
  2121.     in hopes of avoiding "drive U: is not responding" types of
  2122.     messages that some have reported
  2123. pipefs.c:
  2124.     half.ttp was failing under mgr, because of a race condition:
  2125.     our select() returns "ready" for a pipe if nobody exists to
  2126.     write to it (since then a read will return immediately). half
  2127.     would make a pipe that would end up being destroyed immediately
  2128.     by mgr before it got attached to a process. Solution: pipes that
  2129.     have *never* been opened yet for writing get a special marker
  2130.     and select doesn't worry about them, only about ones that were
  2131.     once written to.
  2132. pipefs.c:
  2133.     Fixed FIONWRITE to return the correct value.
  2134. dosdir.c:
  2135.     Refuse to Frename a file with the FA_RDONLY attribute.
  2136. biosfs.c:
  2137.     Fixed bios_write to return the number of bytes successfully
  2138.     written.
  2139. bios.c:
  2140.     LAST_DEVICE was inaccurate. This could happen again, so I'm simply
  2141.     getting rid of it and leaving all errors to the BIOS.
  2142. pipefs.c:
  2143.     Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional
  2144.     pipes that don't have a writer can still be written to).
  2145. filesys.c:
  2146.     Fixed relpath2cookie so that it doesn't *always* follow symlinks
  2147.     (it only should when lastname == follow_links)
  2148. dosfile.c:
  2149.     If the FA_RDONLY bit is set on the file, even the superuser should
  2150.     be denied access for writing.
  2151. dosfile.c:
  2152.     Requiring write permission for Fdatime is a Bad Idea, since GEMDOS
  2153.     doesn't; so now MiNT doesn't either.
  2154. tosfs.c, filesys.c:
  2155.     Fixed a bug with media changes (Fsfirst would sometimes try to close a
  2156.     directory that had already been automatically closed by a media change).
  2157.  
  2158. PATCHLEVEL18::
  2159.  
  2160. main.c:
  2161.     Fixed the machine type detection code; it needs to run before
  2162.     biosfs is initialized, i.e. before init_filesys().
  2163. main.c:
  2164.     Provide a configuration file so that users can automatically
  2165.     setup symbolic links and can change their init program.
  2166. biosfs.c:
  2167.     Allow rename on bios devices, so people who want terminals called
  2168.     "ttyX" instead of "modemX" can do so.
  2169. dosdir.c:
  2170.     Flink shouldn't need write permission on the destination
  2171.     directory, only the source.
  2172. dosfile.c:
  2173.     Added FSTAT function for Fcntl, to allow a better version of
  2174.     fstat() for the library.
  2175. dosfile.c:
  2176.     Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY
  2177.     into MiNT 0.9 O_NDELAY. This is a temporary measure only,
  2178.     to let older versions of mgr continue to work for a while.
  2179. filesys.c:
  2180.     Symbolic links with relative paths were always failing with
  2181.     ELOOP. Oops! (Thanks to Stephen Henson for catching this.)
  2182. file.h, tosfs.c, dosfile.c:
  2183.     Added a new flag, FS_NOXBIT, to control whether or not the
  2184.     file system has a sensible notion of execute permission.
  2185.     This removes an ugly check for &tos_filesys.
  2186. mint.h,util.c,mem.c:
  2187.     Added a compile time option, JUNK_MEM, to deliberately fill
  2188.     the memory MiNT acquires with garbage; this is for debugging
  2189.     (to help track down silly failures to initialize memory) and
  2190.     not for production code.
  2191. proc.c:
  2192.     Fixed a typo in init_proc() that was causing memory not to
  2193.     be initialized to 0 correctly. (Thanks are due to Stephen
  2194.     Usher for catching this one.)
  2195. tosfs.c:
  2196.     Added a tos_rewinddir that works.
  2197. file.h:
  2198.     Added blocks and blksize fields to the XATTR structure, and
  2199.     provided a few extra reserved fields for future expansion.
  2200.     (Also: re-arranged some fields to match what the gcc library
  2201.     already has.)
  2202. file.h, main.c:
  2203.     Add sleep, wake, and wakeselect to the kernel info structure;
  2204.     some device drivers will need these.
  2205. biosfs.c:
  2206.     Make nodskchng do a Getbpb on the (non-existent) device; the officially
  2207.     documented way of forcing a disk change requires this.
  2208. file.h,filesys.c,*fs.c:
  2209.     Remove the "flag" argument from the dskchng function, and
  2210.     have the kernel check Rwabs for E_CHNG; this should save
  2211.     a lot of duplication in user file systems, since everyone
  2212.     really has to do this anyways.
  2213. dosdir.c:
  2214.     Make sure that Fsfirst names can be null-terminated.
  2215. filesys.c:
  2216.     Oops: a misplaced bracket in disk_changed was causing
  2217.     write-protected disks to always appear to have changed!
  2218. tosfs.c:
  2219.     Made it illegal to delete or truncate an open file.
  2220.  
  2221. PATCHLEVEL17::
  2222.  
  2223. version.h:
  2224.     I think we can call this version an "alpha" one, now. No more
  2225.     major features remain to be added (fingers crossed, here).
  2226. filesys.c,dosdir.c,*fs.c,file.h:
  2227.     Media change detection code; this is now the kernel's
  2228.     responsibility. This necessitated an additional function
  2229.     for file systems; I hope this is the last one.
  2230. main.c,biosfs.c:
  2231.     Check what kind of machine we're on, and adjust what devices are
  2232.     present accordingly. The rs232 file has been renamed to "modem1".
  2233.     WARNING: This will break existing code that uses the name "rs232".
  2234. filesys.c:
  2235.     Code for loading file systems (finally!)
  2236. bios.c,context.s:
  2237.     Made Rwabs, Getbpb, and Mediach save registers (since device
  2238.     drivers often don't, and loadable file systems will be calling
  2239.     these directly).
  2240. main.c:
  2241.     Implemented the "struct kerinfo" to pass information to loadable
  2242.     file systems.
  2243. filesys.c:
  2244.     Re-wrote path2cookie to provide for symbolic links; a new routine
  2245.     (relpath2cookie) helps us out.
  2246. unifs.c:
  2247.     Code for creating, reading, and deleting symbolic links.
  2248. *fs.c, dosfile.c, file.h:
  2249.     Changed the way file opens and creates are done; the former
  2250.     (*getdev) routine for file systems has been split into
  2251.     (*creat) and (*getdev), both of which are quite a bit simpler.
  2252.     This whole scheme is clearer, less work for the file system,
  2253.     and will support symbolic links much better.
  2254. various places:
  2255.     Add security checks. This is still pretty sad, but at least it
  2256.     can provide one with a modicum of protection against silly
  2257.     mistakes.
  2258. dosfile.c:
  2259.     Require write permission on a file before changing its date via
  2260.     Fdatime.
  2261. tosfs.c:
  2262.     Cleaned up and streamlined a bit, and fixed tos_readlabel.
  2263. *fs.c,dosdir.c,file.h:
  2264.     Changed the file system "getxattr", "chmode", "chown", and
  2265.     "chattr" functions to take a single file cookie instead of a
  2266.     (directory, name) pair. This should make most uses of these
  2267.     functions (e.g. in name lookups) more efficient. Also,
  2268.     changed the readdir() function to return a file cookie to go
  2269.     along with the newly read file name.
  2270. main.c:
  2271.     If "init.prg" isn't found, try starting GEM instead.
  2272. unifs.c:
  2273.     Re-arranged to allow for symbolic links.
  2274. filesys.c:
  2275.     Implemented some media change routines.
  2276. dosdir.c:
  2277.     Added Fchown and Fchmod system calls.
  2278. dosdir.c:
  2279.     Added security check for Fattrib().
  2280.  
  2281. PATCHLEVEL16::
  2282.  
  2283. lots of places:
  2284.     Try to make TRACE() and DEBUG() messages more useful for people
  2285.     who don't know the internals of the kernel, and who just want to
  2286.     debug their own programs.
  2287. dosdir.c:
  2288.     Added Flink, Fsymlink, Freadlink, and Dcntl system calls.
  2289. *fs.c,file.h:
  2290.     Added a new mode to Dpathconf() to determine whether the
  2291.     file system uses DOS type file naming conventions, ordinary
  2292.     Unix type, or _POSIX_NO_TRUNC type.
  2293. file.h:
  2294.     Add an "fscntl" field to the file system structure.
  2295. tosfs.c:
  2296.     Fix the mode values returned from getxattr() (regular files
  2297.     have type S_IFREG, not S_IFMT).
  2298. proc.c:
  2299.     Zero the child's srchdta field after fork_proc(); otherwise,
  2300.     the accounting for Fsfirst/Fsnext can get messed up. Thanks
  2301.     again to S. Henson.
  2302. mem.c:
  2303.     As Steve Henson pointed out, resetting the effective user and
  2304.     group id's in exec_region is probably a Bad Idea.
  2305. dosdir.c:
  2306.     Change Dopendir/Dclosedir to use umalloc and ufree instead of
  2307.     kmalloc and kfree.
  2308.  
  2309. PATCHLEVEL15::
  2310.  
  2311. dosdir.c:
  2312.     When terminating, clean up after any Fsfirst/Fsnext sequences that
  2313.     didn't go to completion.
  2314. tosfs.c:
  2315.     Streamlined garbage collection code, and also corrected a bug in
  2316.     which file indices used in directory searches could be garbage
  2317.     collected.
  2318. file.h, *fs.c:
  2319.     Add symlink and hard link functions.
  2320. pipefs.c:
  2321.     Make FIONWRITE work again (a line was accidentally deleted).
  2322.     Make sure that Fselect() will select any pipes that have been
  2323.     closed.
  2324. dossig.c:
  2325.     Put back the user id check in Pkill.
  2326. dos.c, proc.c:
  2327.     Make sure that the "euid" and "egid" fields are set with
  2328.     the Psetuid and Psetgid calls. Also, make sure the fields
  2329.     are reset after an exec.
  2330. mem.c:
  2331.     Make exec_region shrink the process 'mem' and 'addr' tables
  2332.     to the default again if extra regions had been allocated.
  2333. dosmem.c:
  2334.     Get rid of the magic number "100", and introduce a maximum user
  2335.     settable priority MAX_NICE so that the kernel can make sure
  2336.     that a process that needs to run (e.g. an aborted vfork) will
  2337.     run first by setting its priority to MAX_NICE+1.
  2338. proc.c:
  2339.     Make sure the initial process memory tables are zeroed.
  2340. proc.c:
  2341.     Adjust the process scheduling algorithm (yet again!). Also,
  2342.     rename "nice_count" to "curpri".
  2343. dosdir.c,dos.c:
  2344.     Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.
  2345. *fs.c:
  2346.     Made readdir return a file index (inode number) if it's not
  2347.     doing a TOS mode search.
  2348. biosfs.c:
  2349.     PHYSCONS is such an ugly name; CONSOLE makes more sense.
  2350.  
  2351. PATCHLEVEL14::
  2352.  
  2353. mem.c:
  2354.     Allow the kernel to dynamically allocate memory region
  2355.     descriptors if it runs out; also, increase the number that
  2356.     it starts with by default.
  2357. util.c:
  2358.     Made it harmless to call kfree with a NULL argument.
  2359. proc.h,mem.c,dosmem.c,proc.c:
  2360.     Eliminate the 64 region per process limit, by making the "mem"
  2361.     and "addr" arrays dynamically allocated.
  2362. proc.c:
  2363.     Change the code for selecting which process to run next; if more
  2364.     than one process is on the ready queue, we use a per-process
  2365.     counter to prevent high priority processes from hogging all the
  2366.     time.
  2367. dosmem.c:
  2368.     Release a process' controlling terminal (by setting it's process
  2369.     group back to 0) if the process is a process group leader and
  2370.     is exiting.
  2371. dosfile.c,tty.c,*fs.c:
  2372.     Made do_open set terminals up correctly on open/close, and
  2373.     handle assigning process groups to them. Also, made the terminal's
  2374.     process group be set automatically on Fforce(-1,...).
  2375. main.c,timeout.c:
  2376.     Added AKP's code for better resolution of time usage.
  2377. DELETED FILES:
  2378.     xlate.c, xlate32.s, newdisk.s
  2379. everywhere:
  2380.     Removed all references to NEED_TRANSLATION. This is getting to be a
  2381.     pain to maintain, and nobody seems to actually use it.
  2382. *fs.c:
  2383.     Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).
  2384. timeout.c:
  2385.     New function, nap, for processes that are in busy loops waiting for
  2386.     an event that probably won't happen for a while (e.g. waiting for
  2387.     the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds
  2388.     instead of yield().
  2389. mem.c:
  2390.     create_env() should use the value from the current process' basepage,
  2391.     since this may *not* be the same as the environment the process
  2392.     was actually started with
  2393. dosfile.c:
  2394.     Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well
  2395.     as the read/write mode.
  2396. unifs.c:
  2397.     Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just
  2398.     "a", "b" etc.
  2399. dosmem.c:
  2400.     Make it possible to provide a name with Pexec mode 104. Provide a new
  2401.     mode 106 that starts a process in the background and automatically
  2402.     detaches the process TPA from the parent's memory.
  2403.  
  2404. PATCHLEVEL13::
  2405.  
  2406. biosfs.c:
  2407.     Made sure that tty_getchar() won't see (long) negative values
  2408.     returned from a successful read, by clearing the high bit
  2409.     of read values.
  2410. *fs.c,atarierr.h:
  2411.     Made file systems responsible for dealing with "." and "..";
  2412.     introduced a new (fake) EMOUNT error to indicate when ".." is
  2413.     found in a root directory (this is for the benefit of the
  2414.     unified file system code)
  2415. dosdir.c,filesys.c:
  2416.     Changes to allow for the unified file system.
  2417. unifs.c, makefile:
  2418.     New file, for a "unified" file system.
  2419. filesys.c, *fs.c:
  2420.     Renamed denyaccess() to denyshare().
  2421. dosdir.c:
  2422.     Changed getname() to work from the root down instead of from
  2423.     the directory up; this should work better for mounting and
  2424.     symbolic links.
  2425. dosdir.c:
  2426.     Moved the check for a drive specifier (A:\FOO) in Dsetpath to
  2427.     where it should have been, namely before any use of the drive.
  2428. biosfs.c,pipefs.c:
  2429.     In opendir, make sure the directory structure is properly
  2430.     initialized.
  2431. dos.c:
  2432.     Changed snice and srenice to pnice and prenice; also modified the
  2433.     return values to be 16 bit (for the normal case), and 32 bit
  2434.     negative for errors, so that low priority processes can be
  2435.     distinguished from errors.
  2436. debug*.c:
  2437.     The Bconstat() check for the printer should be applied to device
  2438.     0, not 1.
  2439.  
  2440. PATCHLEVEL12::
  2441.  
  2442. dosdir.c,filesys.c:
  2443.     Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote
  2444.     the pat_match function to work correctly (at least, according
  2445.     to the TOS rules :-).
  2446. *fs.c, file.h:
  2447.     Added opendir/readdir/closedir calls to file systems to allow
  2448.     more general file systems; also changed getattr into getxattr
  2449.     (again, to allow file systems with extra goodies), setattr into
  2450.     chattr, and added chown and chmod calls. Deleted sfirst/snext
  2451.     file system entry points, and the Xsfirst/Xsnext system calls.
  2452. *fs.c,file.h,dosfile.c,dosdir.c:
  2453.     Changed file systems to have separate calls for reading/writing
  2454.     volume labels. Added checks to Fattrib and Fcreate to avoid creating
  2455.     files with bad attributes (e.g. FA_LABEL or FA_DIR and anything
  2456.     else).
  2457. main.c:
  2458.     Change the definition of tosvers so that TOS 1.0 corresponds
  2459.     to tosvers == 0x100, not tosvers == 0. Also, clean up the
  2460.     code for testing TOS versions.
  2461.     WARNING: This may break RAM TOS versions. I doubt it matters.
  2462. bios.c,main.c:
  2463.     Always set the kbshft variable, so that kbshift is more
  2464.     efficient.
  2465. dos.c:
  2466.     Eliminated the old code that allowed Super(-1L) to work (GEMDOS
  2467.     doesn't support this, so why should MiNT?)
  2468. dos.c:
  2469.     Added GEMDOS date and time routines, and made sure that
  2470.     datestamp and timestamp are initialized properly when
  2471.     MiNT is started.
  2472. mem.c:
  2473.     Increased the size of the buffer used for reading relocation
  2474.     information in load_region.
  2475. *fs.c, dosfile.c:
  2476.     Changed the filesystem getdev call to return a file cookie
  2477.     (this saves a call to lookup on every open).
  2478. *fs.c, filesys.c:
  2479.     Eliminated static variables, changed all routines that used to
  2480.     return pointers to cookies to take an extra argument (a pointer
  2481.     to the place to put the result).
  2482. tosfs.c:
  2483.     Turn O_COMPAT sharing mode into O_DENYNONE (after making other
  2484.     appropriate changes to the access modes).
  2485. debugold.c:
  2486.     Updated to reflect changes in debug.c.
  2487. debug.c:
  2488.     Added calls to va_end where appropriate.
  2489. debug.c:
  2490.     Before, hitting a key paused debugging output; now, debug_ws
  2491.     checks the device that output is going to, so that e.g. if it's
  2492.     going to the MIDI port, the output is paused when a character
  2493.     arrives on the MIDI port.
  2494. mem.c:
  2495.     Made exec_region use O_DENYNONE sharing mode instead of O_DENYW
  2496.  
  2497. PATCHLEVEL11::
  2498.  
  2499. dosfile.c:
  2500.     Forbid closing file handles < 0; this will prevent accidental
  2501.     destruction of the BIOS handles.
  2502. dosfile.c:
  2503.     Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and
  2504.     move it to dosfile.c. The semantics are a bit different, too;
  2505.     see the comments in dosfile.c.
  2506. bios.c:
  2507.     Really fix the MIDI output routines, this time. (sigh)
  2508.  
  2509. PATCHLEVEL10::
  2510.  
  2511. signal.c:
  2512.     Fixed a typo in the message printed when bombs occur. Also,
  2513.     removed the copying of data from the supervisor stack to the
  2514.     BIOS area -- this was causing very strange problems, and it's
  2515.     not clear that the info would be useful under MiNT anyway.
  2516.     Finally, all this is only supposed to happen for certain
  2517.     signals, not for any random killings.
  2518.  
  2519. PATCHLEVEL9::
  2520.  
  2521. file.h, *fs.c:
  2522.     Changed the definition of the DTA buffer to free up space for
  2523.     user/group id fields and an extended attributes field. Made
  2524.     sfirst/snext use the 'aux' field of the directory cookie
  2525.     as an index.
  2526. dos.c:
  2527.     Fixed Talarm() to return the number of seconds left before an
  2528.     alarm, not the number of milliseconds.
  2529. dosdir.c:
  2530.     New system calls, Xsfirst/Xsnext, for accessing file systems
  2531.     with long (>12 character) names.
  2532. signal.c:
  2533.     Fill in the BIOS post-mortem dump error correctly after
  2534.     bus errors, address errors, etc. Also, made the "bomb" replacement
  2535.     routine give the process basepage address and program counter,
  2536.     as suggested by AKP.
  2537. tosfs.c:
  2538.     Fixed the tos_lookup bug that was causing bus errors during file
  2539.     opens.
  2540.  
  2541. PATCHLEVEL8::
  2542.  
  2543. tosfs.c:
  2544.     Made opens with O_COMPAT sharing mode always open for both reading
  2545.     and writing; this is so broken TOS programs that write to read-only
  2546.     handles will continue to work.
  2547. file.h, tty.c:
  2548.     Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size
  2549.     fields to the tty structure to support them.
  2550. dossig.c:
  2551.     Remove user id checks (for now). Make it impossible to catch
  2552.     SIGSTOP.
  2553. bios.c:
  2554.     Fix so Bconout returns a value (it really should, at least for
  2555.     the printer).
  2556. mem.c:
  2557.     Don't context switch and retry alloc_region; file systems and some
  2558.     parts of the kernel aren't expecting the context switch, and besides
  2559.     the previous change makes this tactic less likely to be helpful.
  2560. mem.c:
  2561.     Don't allocate *all* of the memory to the basepage, leave some for
  2562.     the kernel and other programs.
  2563. pipefs.c:
  2564.     Add a check for broken pipes when a program is trying to write
  2565.     atomically.
  2566. dosmem.c:
  2567.     Block job control signals during a vfork instead of ignoring
  2568.     them; this will result in the "right" thing happening after
  2569.     the exec (since the blocked signals will then be unblocked).
  2570. tosfs.c:
  2571.     Eeek! Fixed a very serious bug in the garbage collection
  2572.     routines ("i" was used where "j" should have been in a loop:
  2573.     result: things could be garbage collected that shouldn't
  2574.     have been!)
  2575. procfs.c:
  2576.     changed the return value from "dfree" to more accurately indicate
  2577.     the free memory in the system, and to also provide information
  2578.     about the smallest unit of allocable memory (currently a longword)
  2579. *fs.c,dosfile.c,dosdir.c,filesys.c:
  2580.     instead of passing fcookies to file systems, pass pointers to
  2581.     them; this should slightly improve efficiency, and greatly
  2582.     improve portability (otherwise, compilers used to make
  2583.     installable file systems would have to have the same structure
  2584.     passing/return conventions as the one that compiled the kernel)
  2585. dos.c:
  2586.     new system call, Srenice(), to change priority of a different
  2587.     process
  2588. dos.c:
  2589.     change Fbiosdev() system call to take a pid argument
  2590. proc.h, dosfile.c:
  2591.     add per-file descriptor flags for things like "close on exec"
  2592. file.h, mem.c, *fs.c:
  2593.     new file open mode, O_EXEC, for the kernel to use in Pexec
  2594. rendez.c, dos.c:
  2595.     new file from AKP to implement a simple and fast message based
  2596.     IPC; the new system call is Pmsg. Also note that the syscall number
  2597.     of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has
  2598.     been moved to 0x126.
  2599. filesys.c:
  2600.     applied Steve Henson's patches to improve path2cookie's handling of
  2601.     repeated slashes
  2602. proc.h:
  2603.     MAX_OPEN should be 32, not 20!
  2604. mem.c:
  2605.     Ignore "close on exec" flag for the standard handles (for some
  2606.     reason, bash manages to set these for 0,1,2; this is probably a bug
  2607.     in the port of bash, but on the other hand it's unlikely that
  2608.     anyone would really want to close the standard handles when doing
  2609.     an exec, anyway)
  2610. tty.c:
  2611.     Fixed RAW mode reads on terminals so that they're no longer
  2612.     terminated by '\r' or '\n' (and so that pty slaves aren't forced
  2613.     to read just 1 character at a time). Thanks to AKP for catching
  2614.     this.
  2615.  
  2616. PATCHLEVEL7::
  2617.  
  2618. *fs.c:
  2619.     Cleaned up the Dpathconf() return values to better reflect
  2620.     reality, and made the code a little easier to understand.
  2621. bios.c:
  2622.     Adjust bcostat() parameters so that V:\MIDI and V:\KBD call
  2623.     the right (wrong) device (BIOS devices 3 and 4 are mixed
  2624.     up for Bcostat).
  2625. dosmem.c:
  2626.     Made sure that Malloc(0L) always returns a NULL pointer.
  2627. dosfile.c:
  2628.     Made Fclose() of handles 0, 1, 2, and 3 restore the default
  2629.     mappings. (Apparently TOS _does_ do this, after all.)
  2630. bios.c:
  2631.     AHDI 3.1 added a new parameter to Rwabs; we now pass that
  2632.     along too.
  2633. timeout.c:
  2634.     Make canceltimeout() free the memory used by the time out
  2635.     descriptor. (another Fselect bug)
  2636. signal.h:
  2637.     Removed ABORT and ALARM from list of signals that are reported
  2638.     by the kernel.
  2639. proc.c:
  2640.     Moved checkalarms() to do_wakeup_things() so that short time outs
  2641.     will be properly recognized; this fixes a nasty bug in Fselect.
  2642.  
  2643. PATCHLEVEL6::
  2644.  
  2645. pipefs.c:
  2646.     Make writes of 1024 or fewer bytes atomic. Also, increase pipe
  2647.     buffer size to 4096.
  2648. tosfs.c:
  2649.     Make O_EXCL and O_TRUNC bits useful.
  2650. tosfs.c,pipefs.c,filesys.c:
  2651.     Fully implement file sharing modes for tosfs and pipefs. A new
  2652.     routine (denyaccess) is provided in filesys.c for checking
  2653.     file open modes and determining conflicts (if any).
  2654. pipefs.c:
  2655.     If a process writes on a broken pipe while ignoring SIGPIPE,
  2656.     the write now returns -1. (Thanks, Stephen)
  2657. debug.c, bios.c:
  2658.     Applied bammi's patches to PATCHLEVEL 5 to fix some typos.
  2659.  
  2660. PATCHLEVEL5::
  2661.  
  2662. debug.c, bios.c:
  2663.     Applied AKP's debugging output patches, to allow TRACE and
  2664.     DEBUG output to go to serial ports as well as the printer.
  2665.  
  2666. PATCHLEVEL4::
  2667.  
  2668. dos.c:
  2669.     NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS
  2670.     devices.
  2671. bios.c, proc.h:
  2672.     Added binput and boutput arrays to allow for per-process redirection
  2673.     of BIOS device input and output to GEMDOS file handles.
  2674. biosfs.c:
  2675.     Changed "mdi" to "midi".
  2676.     WARNING: this change could (I suppose) break existing code.
  2677. util.c:
  2678.     Added a umalloc() function to allocate memory in user space,
  2679.     and modified the various sfirst routines to use this to
  2680.     allocate space for patterns instead of kmalloc.
  2681. dosdir.c,file.h:
  2682.     Added an FS_CASESENSITIVE flag to control conversion of file
  2683.     names to upper case for TOS domain processes.
  2684. dosdir.c, *fs.c:
  2685.     Made sfirst/snext functions take an extra argument, the length
  2686.     of the file name field in the DTA buffer (so that we can provide
  2687.     Xsfirst/Xsnext functions that can work with longer names)
  2688. mem.c:
  2689.     Fixed exec_region so that the close-on-exec flag works.
  2690. filesys.c:
  2691.     Made path2cookie take the name of the place to store the last
  2692.     component of the path name as an argument (instead of always
  2693.     storing it in the global variable temp1).
  2694. biosfs.c:
  2695.     Added code for O_NDELAY on bios devices.
  2696. tosfs.c:
  2697.     Cleaned up garbage collection a bit -- I hope this fixes the
  2698.     problems with running out of indices.
  2699. filesys.c:
  2700.     Returned the special parsing code for CON:, AUX:, etc.
  2701. file.h:
  2702.     OOPS! The flock structure was missing an element (l_whence). It
  2703.     was added.
  2704.     WARNING: This change may break existing code.
  2705. util.c:
  2706.     Made kmalloc take a long parameter, just in case installable
  2707.     file systems need lots of memory.
  2708. file.h, atarierr.h, pipefs.c:
  2709.     Made file modes compatible with _FLK specification. Also
  2710.     added the ELOCKED and ENSLOCK errors to atarierr.h, and made
  2711.     pipefs.c use ELOCKED instead of EACCDN.
  2712.     WARNING: this *will* break existing programs. In particular, mgr
  2713.     no longer works :-( because O_NDELAY has changed. (this was
  2714.     temporarily patched)
  2715. dos.c,dosfile.c:
  2716.     Added Flock() system call.
  2717. mem.c:
  2718.     Made the initial user stack pointer low enough so that syscall.s
  2719.     won't run into the end of memory if the user makes a system call
  2720.     right away and doesn't push many parameters (the code in syscall
  2721.     always tries to copy a large chunk of the caller's stack).
  2722. dosmem.c:
  2723.     Made vfork'd processes ignore job control signals (thanks to
  2724.     Stephen for pointing out how some shells rely on BSD's similar
  2725.     behaviour).
  2726.  
  2727. PATCHLEVEL3::
  2728.  
  2729. dosfile.c, file.h, *fs.c, bios.c:
  2730.     Changed f_select to use the new timeout mechanism, and provided
  2731.     routines in device drivers to wake up selecting processes.
  2732. proc.h:
  2733.     New queue, SELECT_Q, for processes doing "select", to match above
  2734.     changes
  2735. dos.c:
  2736.     Changed t_alarm to use the new timeout mechanism.
  2737. timeout.c,proc.h:
  2738.     Added a new "timeout" mechanism, so that processes can specify
  2739.     an action to be taken when a counter expires.
  2740. various places:
  2741.     Cleaned up TRACE and DEBUG output
  2742. proc.c:
  2743.     Set current directory based on the TOS current directory
  2744.     when MiNT is starting up.
  2745. debug.c:
  2746.     Added AKP's "trace" mode patch
  2747. filesys.c:
  2748.     Replaced strcmp() for . and .. with direct comparisons, again
  2749.     per AKP.
  2750. tosfs.c:
  2751.     Improved search performance a bit (indicies are now allocated
  2752.     at the beginning of the list, instead of at the end)
  2753. main.c, version.h:
  2754.     Introduced PATCHLEVEL for alpha and beta test versions    
  2755. util.c:
  2756.     Made kmalloc() try the kernel memory region first for small
  2757.     regions, to cut down fragmentation of the user's memory space
  2758. proc.h:
  2759.     Made the system stacks bigger, to compensate for the bigger
  2760.     contexts now that there's FPU support
  2761. dosmem.c:
  2762.     Fixed bug with Pexec mode 6 (thanks again, AKP)
  2763. biosfs.c:
  2764.     Changed FD0 to STDIN, FD1 to STDOUT, etc.
  2765.     WARNING: this change could break existing code
  2766. filesys.c:
  2767.     '/' is no longer a directory separator for MiNT domain processes
  2768.     (few were using it, and it simplifies things to be able to
  2769.     assume '\' is the only such separator).
  2770.     WARNING: this change could break existing code
  2771. all over the place:
  2772.     Changed the way directories/files are stored. We now have
  2773.     "file cookies" for directories, instead of strings. We
  2774.     also now have two directories per drive per process
  2775.     (a root and current).
  2776. minixfs.c:
  2777.     Removed from the main compile, and MINIX_FS symbol was also
  2778.     removed -- this will be a loadable file system someday
  2779.     (soon, I hope).
  2780. various places:
  2781.     Added Alex Kiernan's patches to support compilation under
  2782.     Lattice C v5
  2783. proc.h, context.s:
  2784.     Added Alex Kiernan's FPU co-processor patches. WARNING: this
  2785.     changes the layout of the proc structure in memory, and so
  2786.     breaks "ps" and similar programs.
  2787. proc.c:
  2788.     Changed sleep() to take the wait condition as an argument; this
  2789.     means that fewer things need to know the internals of the
  2790.     PROC structure
  2791. various places:
  2792.     Added AKP's T_TOSTOP flag changes
  2793. minixfs.c:
  2794.     Changed the 8K buffer in do_change to a static variable; our
  2795.     stacks aren't *that* big!
  2796. intr.s:
  2797.     Fixed a typo that was causing serious problems with the bus
  2798.     error and other exception codes on the TT (thanks for
  2799.     catching this, Allan).
  2800. dosmem.c,signal.c:
  2801.     Corrected the GEMDOS termination vector code (the system stack
  2802.     was being corrupted if the user's code returned). Thanks to
  2803.     Julian Reschke for catching this error.
  2804. ===========================================================================
  2805. version 0.8
  2806.  
  2807. biosfs.c, pipefs.c:
  2808.     fix ^C and ^Y to send the signals to the whole process group,
  2809.     and also to make sure processes don't read these keys if
  2810.     they're turned into signals
  2811. intr.s,dossig.c:
  2812.     fix exception handlers to be more careful about the distinction
  2813.     between being in or out of the kernel
  2814. intr.s, syscall.s, main.c:
  2815.     make sure interrupts are off before changing any vectors
  2816. bios.c:
  2817.     fixed the annoying problems with CTRL-ALT-Fx sometimes leaving
  2818.     keys in the buffer
  2819. signal.c:
  2820.     forced p_sigreturn() with no signal pending to unwind the
  2821.     *whole* signal stack, in case there were multiple signals
  2822.     pending at the time the user did a longjmp() (or whatever
  2823.     prompted the Psigreturn())
  2824. dosmem.c:
  2825.     p_wait3 now supports the WUNTRACED bit; if this isn't set,
  2826.     processes stopped due to job control are *not* returned
  2827. dosmem.c:
  2828.     removed dLibs kludge -- some programs rely on p_parent being
  2829.     non-zero to tell them that they're not accessories
  2830. various places:
  2831.     cleaned up job control stuff to be more Unix like
  2832. mem.c,util.c:
  2833.     added a new memory map for the kernel -- this should ease
  2834.     the problems with programs grabbing all of available memory
  2835. mem.c,dosmem.c:
  2836.     incorporated Allan's bugfixes; alternative RAM should work now
  2837. signal.c, main.c, intr.s:
  2838.     integrated signals with normal exceptions, so that e.g.
  2839.     a bus error raises SIGBUS. This improves the survivability
  2840.     of the kernel, so that a bus error resulting from a bad
  2841.     system call parameter won't kill MiNT, just the offending
  2842.     process.
  2843. proc.c:
  2844.     kludge to let low priority processes run every so often, even
  2845.     in the presence of a high priority process that is ready to run
  2846. atarierr.h:
  2847.     ENMFIL is -49, not -47 -- so much for Abacus' docs :-)
  2848. procfs.c:
  2849.     changes to allow read/write from process space
  2850. minixfs.[ch]:
  2851.     changed lots of function parameter types to avoid promotion and
  2852.     prototype problems with 32 bit code
  2853. bios.c:
  2854.     changed IOREC to IOREC_T to avoid name conflicts with some osbind.h
  2855. biosfs.c:
  2856.     made mouse driver change the line A mouse position variables, so MGR
  2857.     will work with bigscrn and similar large screen emulators
  2858. minixfs.c:
  2859.     new version from Stephen, now supports floppies and other removable
  2860.     media
  2861. mem.c, dosmem.c, dos.c:
  2862.     added code to support new TT TOS calls Mxalloc and Maddalt, plus
  2863.     program flags for loading/mallocing in alternate memory
  2864. bios.c,biosfs.c,dosfile.c:
  2865.     changed so that bios handles 0 and 1 can be redirected just like
  2866.     handle 2 (via the new file handles -3 and -2 respectively; AUX:
  2867.     and PRN: now refer to these files, and RS232 and CENTR to the
  2868.     physical devices)
  2869. dosdir.c:
  2870.     Dsetdrv() fixed to return an error indication when one happens
  2871. dos.c:
  2872.     fixed Super() bug (thanks Stephen)
  2873. minixfs.c:
  2874.     incorporated changes to handle 1K sector sizes
  2875.  
  2876. =============================================================================
  2877. version 0.7
  2878.  
  2879. minixfs.c:
  2880.     new file, courtesy of Stephen N. Henson (olorin@tardis.cs.ed.ac.uk)
  2881.     this is still "under construction"; see minixfs.doc for more details
  2882. bios.c:
  2883.     CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with
  2884.     foreign ROMs (some have trouble with ^\)
  2885. filesys.c:
  2886.     changed pathname resolution code so that multiple slashes in a file
  2887.     name have the same effect as single slashes. POSIX mandates this,
  2888.     and some Unix programs expect it, too
  2889. dosmem.c:
  2890.     changed do_vfork() code so that the text segment of processes is
  2891.     *not* saved in a fork() if the process has separate text, data, and
  2892.     bss segments; this saves a fair bit of memory
  2893. proc.c:
  2894.     changed the process initialization code to better deal with job
  2895.     control; also changed handle 2 to be AUX: (as under TOS) rather
  2896.     than PRN:
  2897. bios.c:
  2898.     added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6
  2899.     (show processes)
  2900. filesys.c:
  2901.     make explicit the fact the individual file names are limited to
  2902.     14 characters
  2903. everywhere:
  2904.     change FILENAME_MAX to PATH_MAX
  2905. mem.c:
  2906.     fixed up comments and debugging/trace info for load_region
  2907. dossig.c:
  2908.     NEW SYSTEM CALL: Psigpending() returns the set of signals that
  2909.     have been sent to the process, but not yet delivered.
  2910. dos.c, dosdir.c:
  2911.     NEW SYSTEM CALLS:
  2912.     Sysconf(n) returns information about the global limits of the
  2913.     currently running version of MiNT
  2914.     Dpathconf(name, n) returns information about the file system that
  2915.     the file "name" is located on
  2916. bios.c:
  2917.     allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,
  2918.     SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw
  2919.     mode
  2920. various places:
  2921.     call zero() instead of bzero()
  2922. context.s,intr.s:
  2923.     changes to make MiNT TT compatible. Thanks to Allan Pratt for this!
  2924. biosfs.c, tosfs.c, pipefs.c, procfs.c:
  2925.     fsfirst/fsnext return all upper case in TOS domain now, but
  2926.     lower case (or mixed) in MiNT domain; this is to try to wean
  2927.     programmers off of the habit of assuming everything is upper case
  2928.     (and converting accordingly)
  2929. biosfs.c:
  2930.     made mouse compatible with TOS ALT-cursor keys (the Y direction was
  2931.     wrong before)
  2932. intr.s:
  2933.     IPL 7 before reboot (thanks, Allan)
  2934. version.h, main.c:
  2935.     made version numbering a bit easier (big deal)
  2936. main.c:
  2937.     AARGH! The cookie jar stuff was plain wrong (the last cookie should
  2938.     have the total number of slots, not just the ones that are free).
  2939. main.c:
  2940.     pass current environment along to init.prg, instead of forcing an
  2941.     empty environment
  2942. signal.c:
  2943.     corrected killpg() bug (wasn't checking signals, so the current
  2944.     process didn't get the signal until later)
  2945. mem.c, dosmem.c:
  2946.     made sure that all sizes would always be rounded to the nearest
  2947.     longword. Just in case they aren't, Malloc(-1L) rounds down to the
  2948.         next smallest longword.
  2949. lots of places:
  2950.     memory handling was overhauled completely; kmalloc now allocates
  2951.     memory from the same space as do m_alloc and p_exec, so there is
  2952.     no artificial constraint on the number of processes
  2953. ===========================================================================
  2954. version 0.6
  2955.  
  2956. dos.c:
  2957.     added Talarm() and Pause() system calls
  2958. bios.c, tty.c, pipefs.c:
  2959.     added real tty structures that programs can manipulate
  2960. proc.c:
  2961.     added some sanity checks for things like stack overflow
  2962. signal.c:
  2963.     revamped signal handling so that Psigreturn() no longer needs an
  2964.     argument.
  2965. dosmem.c:
  2966.     made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
  2967. intr.s:
  2968.     fixed the Psigreturn race condition bug
  2969. biosfs.c, pipefs.c, filesys.c, util.c:
  2970.     added case-insensitive string comparison routine, and modified the
  2971.     file systems to use it
  2972. bios.c, console.c:
  2973.     changed return values of status calls from 1 to -1, to be TOS
  2974.     compatible
  2975. dos.c:
  2976.     added new calls to get resource usage, and set resource limits
  2977. dosfile.c:
  2978.     added new call, f_select
  2979. signal.c:
  2980.     changed so stopped processes always have a return code of 0177
  2981. biosfs.c:
  2982.     added a fake "third button" on the mouse (you get it by holding down
  2983.     a shift key and a mouse button)
  2984.     made mouse_read return at least 1 byte
  2985. bios.c, proc.c, biosfs.c:
  2986.     added code to check for CTRL-ALT-key combinations on every
  2987.     process switch; thus, debugging, rebooting, etc. do not require
  2988.     waiting for a read from the keyboard. Also, ^C sends a SIGINT
  2989.     immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
  2990.     right away, too.
  2991.     CTRL-ALT-DEL supported for TOS < 1.4
  2992.  
  2993. =========================================================================
  2994. version 0.5
  2995.  
  2996. First publically released version (made available for FTP as a beta test)
  2997.  
  2998.